文章目录
- 安卓开发中的常见控件
- 1.EditText---输入文本
- 2.TextView
- 3.Button
- 4.CheckBox---复选框
- 5.RadioButton---单选按钮
- 6.ProgressBar
- 7.ImageView
- 8.ListView
- ArrayAdapter:
- SimpleAdapter:
安卓开发中的常见控件
1.EditText—输入文本
常见属性
android:hint="提示输入的内容"
android:textColorHint="设置提示hint信息的颜色"
android:maxLength="输入最长的长度"
android:maxLines="输入最长的行数"
android:minLength="输入最短的长度"
android:inputType="输入数据类型"//文章过滤设置
android:inputType="text"//输入文本
android:inputType="textPassword"//输入密码
android:inputType="textVisiblePassword"//输入可见的密码
android:inputType="number"//输入数字
android:inputType="phone"//拨号键盘实例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http:///apk/res/android"
>
<EditText
android:id="@+id/editText_one"
android:inputType="number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="11"
android:hint="请在此输入手机号码"
android:textColorHint=" #4B0082"/>
<EditText
android:id="@+id/editText_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLength="8"
android:hint="输入密码"
android:textColorHint=" #87CEFA"
android:inputType="textPassword"/>
</LinearLayout> 效果图:

2.TextView
常见属性
android:textColor="文本颜色"
android:textSize="文本大小"//sp为单位
android:background="背景颜色 || 图片地址"
android:text="文本内容"
//设置文本位置
android:gravity="center_vertical" //设置垂直居中
android:gravity="right" //设置居右
android:gravity="center_vertical|center_horizontal" //设置垂直水平居中
//设置链接
android:autoLink="all" //设置自动识别链接所有
android:autoLink="phone" //设置自动识别链接,phone为链接到电话簿
android:autoLink="email" //设置自动识别链接,phone为链接到邮箱
android:autoLink="web" //设置自动识别链接,phone为链接到web网址
//文本过长处理
android:ellipsize="start" 省略号在开头
android:ellipsize="middle" 省略号在中间
android:ellipsize="end" 省略号在结尾
android:ellipsize="marquee"设置跑马灯效果
//设置字形
android:textStyle="bold|italic"实例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http:///apk/res/android"
>
<TextView
android:id="@+id/textView0"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FF0000"
android:textSize="18sp"
android:background="#FFFFFF"
android:text="拨打手机:186621422541"
android:gravity="center_vertical"
android:autoLink="phone" />
</LinearLayout>效果图:

3.Button
常见属性
android:textAllCaps="false"//大写
android:background="#00ffff"//颜色
android:onClick="goClick"//点击监听
android:text="Button"//按钮上显示的内容监听
//匿名内部类方式建立的监听器
Button.OnClickListener anonymousListener=new View.OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("匿名内部类方式定义的的Button监听器!");
Toast.makeText(MainActivity.this, "匿名内部类方式定义的的Button监听器!", Toast.LENGTH_SHORT).show();
}
};
Button btn=(Button)findViewById(.btnForth);
btn.setOnClickListener(anonymousListener);//利用Activity类实现监听接口
public class MainActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutbutton);
//设立由Activity实现OnClickListener接口的共同的监听器,多次设置会覆盖以前的值
btnFirst.setOnClickListener(this);
btnSecond.setOnClickListener(this);
}
//利用Activity类实现监听接口
@Override
public void onClick(View v) {
switch (v.getId()) {//区分哪个按钮的事件
case .btnFirst:
System.out.println("First Button");
Toast.makeText(MainActivity.this, "First Button", Toast.LENGTH_SHORT).show();
break;
case .btnSecond:
System.out.println("Second Button");
Toast.makeText(MainActivity.this, "Second Button", Toast.LENGTH_SHORT).show();
break;
}
}
}4.CheckBox—复选框
常见属性
android:text="美术"
android:id="@+id/like3"
android:checked="true"//是否选中监听:
public class MainActivity extends AppCompatActivity {
EditText editText;
private CompoundButton.OnCheckedChangeListener checkBox_listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBox_listener=new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Log.i("check", "选中了["+buttonView.getText().toString()+"]");
Toast.makeText(MainActivity.this, buttonView.getText().toString()+"]", Toast.LENGTH_SHORT).show();
}
}
};
final CheckBox like1=(CheckBox)findViewById(.like1);
final CheckBox like2=(CheckBox)findViewById(.like2);
final CheckBox like3=(CheckBox)findViewById(.like3);
like1.setOnCheckedChangeListener(checkBox_listener);
like2.setOnCheckedChangeListener(checkBox_listener);
like3.setOnCheckedChangeListener(checkBox_listener);
Button button=(Button)findViewById(.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String like="";//保存选中的值
if(like1.isChecked()){
like+=like1.getText().toString()+"";//当第一个复选框被选中
}
if(like2.isChecked()){
like+=like2.getText().toString()+"";//当第二个复选框被选中
}
if(like3.isChecked()){
like+=like3.getText().toString()+"";//当第三个复选框被选中
}
//显示被选中的复选框
Toast.makeText(MainActivity.this, like, Toast.LENGTH_SHORT).show();
}
});
}
}5.RadioButton—单选按钮
RadioButton需要放在RadioGroup中
常见属性
android:text="男"实例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http:///apk/res/android"
>
<RadioGroup
android:id="@+id/sex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"
/>
</RadioGroup>
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选择"/>
</LinearLayout>监听:
public class MainActivity extends AppCompatActivity {
EditText editText;
private CompoundButton.OnCheckedChangeListener checkBox_listener;
Button button;
RadioGroup radioGroup;
RadioButton radioButton1;
RadioButton radioButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
radioGroup=findViewById(.sex);
radioButton1=findViewById(.male);
radioButton2=findViewById(.female);
button=findViewById(.button);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case .male:
Boolean flag=radioButton1.isChecked();
if(radioButton1.isChecked()) {
Log.i("sex", "你是: " + radioButton1.getText().toString());
}
break;
case .female:
if(radioButton2.isChecked()) {
Log.i("sex", "你是: " + radioButton2.getText().toString());
}
break;
}
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sex="";
if(radioButton1.isChecked()){
sex=radioButton1.getText().toString();
}
if(radioButton2.isChecked()){
sex=radioButton2.getText().toString();
}
Log.i("hhh",sex);
}
});
}
}6.ProgressBar
常见属性
//设置进度条类型
style="?android:attr/progressBarStyleHorizontal" //水平直线进度条
style="?android:attr/progressBarStyleLarge" //大的环形进度条
style="?android:attr/progressBarStyleSmall" //小的环形进度条
//设置第一进度和第二进度
android:progress="第一进度的当前值"
android:secondaryProgress="第二进度的当前值"
//设置进度的最大值
android:max="100"
//设置进度条的显示状态
android:visibility="gone"7.ImageView
常见属性
android:adjustViewBounds="true" //是否按比例缩小
android:maxWidth="150dp"
android:maxHeight="150dp"
android:src="@drawable/second" //图片地址
android:scaleType=
center//按图片的原来 size 居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示
centerCrop//按比例扩大图片的size居中显示,使得图片长(宽)等于或大于View的长(宽)
centerInside//将图片的内容完整居中显示,通过按比例缩小或原来的size使得图片长/宽等于或小于View的长/宽
fitCenter//把图片按比例扩大/缩小到View的宽度,居中显示
fitStart//把图片按比例扩大/缩小到View的宽度,置于顶部显示
fitEnd//把图片按比例扩大/缩小到View的宽度,置于底部显示
fitXY//不按比例缩放图片,目标是把图片塞满整个View
matrix//从ImageView左上角开始直接显示,显示不全时,裁剪8.ListView
首先需要了解适配器,适配器就是在安卓中,把数据变成符合界面风格的形式,并且通过ListView显示出来
三种常见的适配器:
(1)ArrayAdapter:简单的数据映射,只包含文字数据。
(2)SimpleAdapter:文字和图片映射,内容相对丰富。
(3)自定义的Adapter
ArrayAdapter:
第一步:编写activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
xmlns:android="http:///apk/res/android"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ArrayAdapter ListView" />
<ListView
android:id="@+id/simpleListViewControll"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>第二步:在Activity中写数据
//用已有的样式
public class MainActivity extends AppCompatActivity {
//定义ListView对象变量---View
private ListView listview;
//存放数据的List<String>对象---Model
private List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取ListView对象
listview=(ListView)findViewById(.simpleListViewControll);
//定义List变量(提供数据)--ArrayList是List的具体实现
list=new ArrayList<String>();
//添加数据内容
list.add("测试数据--1");
list.add("测试数据--2");
list.add("测试数据--3");
list.add("测试数据--4");
list.add("测试数据--5");
list.add("测试数据--6");
list.add("测试数据--7");
list.add("测试数据--8");
list.add("测试数据--9");
//定义ArrayAdapter,衔接ListView和List---Controller
//参数-----上下文环境, ListView的每一行的布局, List<String>对象
//如果要使用自定义的布局,必须指明TextView的ID--布局中也可以包含除TextView之外的其它控件
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
//设置ListView的Adapter对象
listview.setAdapter(adapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String info=list.get(position) + " was clicked!"; //取出点击的行的内容
Toast.makeText(MainActivity.this, info+"--"+id, Toast.LENGTH_SHORT).show();
}
});
}
}//用自定义的样式,只需要自定义一个test.xml文件,把Java中的适配器改成如下代码
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, R.layout.test, ._id, list);<!--test.xml-->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:///apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#3CB371"
android:textSize="50sp"/>
</LinearLayout>系统有的xml | 自定义的xml |
| |
| |
SimpleAdapter:
第一步:编写布局文件activity_main.xml,然后添加ListView控件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http:///apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textSize="28sp" />
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF000000"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>第二步:在Activity中修改
//使用ListActivity--内部仅含有一个ListView
public class MainActivity extends ListActivity {
//数据线性表--List实际上是一个线性表的接口
List<Map<String,Object>> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//创建Adapter对象
SimpleAdapter adapter = new SimpleAdapter(this, //上下文对象
getData(), //存放数据的List对象
R.layout.activity_main, //每行的布局
new String[]{"title","info"}, //数据对象Map中的列名--键
new int[]{.title,.info}); //列内容--Listview中的控件ID,对应控件用于显示Map对象中的值
//为ListActivity中的ListView设置Adapter
setListAdapter(adapter);
}
//获取List数据对象
private List<Map<String,Object>> getData(){
//建立List对象--具体的ArrayList对象
list=new ArrayList<Map<String,Object>>();
//List中存放的Map对象,由多个<键,值>对构成--一个Map对象对应ListView中的一行
Map<String, Object> map;
map=new HashMap<String,Object>();
map.put("title", "牛");
map.put("info", "食草动物,家畜");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "孔雀");
map.put("info", "鸟类,开屏很好看");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "熊猫");
map.put("info", "珍稀,国宝");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "恐龙");
map.put("info", "爬行类,已灭绝");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "神龙");
map.put("info", "神话中的动物");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "北极熊");
map.put("info", "生活在极寒之地");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "牛-2");
map.put("info", "食草动物,家畜");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "孔雀-2");
map.put("info", "鸟类,开屏很好看");
list.add(map);
map=new HashMap<String,Object>();
map.put("title", "熊猫-2");
map.put("info", "珍稀,国宝");
list.add(map);
return list;
}
//重写此方法---点击一行时的回调函数--参数含义同前
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
String s=list.get(position).get("title").toString(); //获取该行的Map对象的指定属性的数据内容
Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show();
}
}结果:



















