一、简单控件的使用
1、TextView控件
用于显示文本信息,它的常用属性如下表所示:
属性名称 | 功能描述 |
---|---|
android:id | 设置控件唯一标识 |
android:layout_width | 设置控件宽度 |
android:layout_height | 设置控件高度 |
android:layout_margin | 设置控件外边距 |
android:padding | 设置控件内边距 |
android:background | 设置控件背景图片 |
android:text | 设置文本内容 |
android:textColor | 设置文本颜色 |
android:textSize | 设置文字大小 |
android:textStyle | 设置字体,bold(粗体)、italic(斜体)、normal(正常) |
android:gravity | 设置文本内容位置,center(居中显示) |
android:maxLength | 设置文本最大长度,超出则不显示 |
android:lines | 设置文本行数,超出则不显示 |
android:maxLines | 设置文本最大行数,超出则不显示 |
android:lineSpacingExtra | 设置文本行间距 |
android:ellipsize |
设置当文本超出控件规定范围时的显示方式 可设置“start、middle和end”,当文本超出范围时,在文本开始、中间或末尾加上省略号 |
android:drawableTop | 在文本顶部显示图像,这个图像资源可以放在res/drawable文件夹,用@drawable/文件名调用 |
Tips:Android中的控件样式除了可以使用XML属性设置,也可以使用Java中的方法设置。控件的每一个XML属性都有一个对应的Java方法,如:TextView控件的android:textColor属性对应Java中的setTextColor()方法。
2、EditText控件
EditText控件表示编辑框,它是TextView控件的子类,用户可以在此控件中输入信息。除了支持TextView控件的属性外,他还支持如下属性:
属性名称 | 功能描述 |
---|---|
android:hint | 设置控件中内容为空时显示的提示文本信息 |
android:textColorHint | 设置控件中内容为空时显示的提示文本信息的颜色 |
android:password | 使文本框中的内容显示为“●” |
android:phoneNumber | 设置输入文本框中内容只能是数字 |
android:minLines | 设置文本的最小行数 |
android:scrollHorizontally | 设置文本信息超出控件宽度的情况是否出现横拉条 |
android:editable | 设置是否可编辑 |
3、Button控件
Button控件表示按钮,继承自TextView控件,既可以显示文本,又可以显示图片,同时也允许用户通过点击来执行操作。
(1)Button控件设置点击事件的三种方式
在布局文件中指定onClick属性的值
通过指定onClick属性来设置Button控件的点击事件,示例如下:
<Button
......
android:onClick="click"/>
需要注意的是,在Activity中定义实现点击事件的方法名必须与onClick属性的值保持一致。
使用匿名内部类
在Activity中,可以通过使用匿名内部类的方式为Button控件设置点击事件,示例如下:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view){
//实现点击事件的代码
}
});
上述代码通过为Button控件设置setOnClickListener()方法实现对Button控件点击事件的监听。setOnClickListener()方法传递的参数是一个匿名内部类、如果监听到Button控件被点击,那么程序会调用匿名内部类中的onClick()方法实现Button的点击事件。
使用Activity实现OnClickListener接口
示例代码如下:
public class Activity extends AppCompatActivity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState){
......
btn.setOnClickListener(this);//设置Button控件的监听事件
}
@Override
public void onClick(View view){
//实现点击事件的代码
}
}
在上述代码中,Activity通过实现View.OnClickListener接口中的onClick()方法来设计点击事件。需要注意的是,在实现onClick()方法之前,必须调用Button控件的setOnClickListener()方法设置点击监听事件,否则对控件的点击不会生效。
前两种方法适合在Button控件较少的情况下使用,如果界面上Button控件较多,可使用第三种。
二、列表控件的使用
适用于在一个页面中展示多个条目,并且每个条目的布局风格一致。
1、ListView控件使用
常用属性列表如下表所示:
属性名称 | 功能描述 |
---|---|
android:listSelector | 当条目被点击后,改变条目的背景颜色 |
android:divider | 设置分割线的颜色 |
android:dividerHeight | 设置分割线的高度 |
android:scrollbars | 是否显示滚动条 |
android:fadingEdge | 去掉上边和下边的黑色阴影 |
2、常用数据适配器
在为一个ListView控件添加数据时会用到数据适配器。数据适配器(Adapter)是数据与视图之间的桥梁,它类似于一个转化器,将复杂的数据转换成用户可以接受的方式进行呈现,接下来,介绍几种常见的适配器。
(1)BaseAdapter
BaseAdapter是基本的数据适配器。它实际上是一个抽象类,通常在自定义数据适配器时,自定义的数据适配器会继承BaseAdapter,该类有4个抽象方法,根据这几个抽象方法对ListView控件进行数据适配。四个抽象方法如下表所示:
方法名称 | 功能描述 |
---|---|
public int getCount() | 获取Item条目的总数 |
public Object getItem(int position) | 根据position(位置)获取某个item的对象 |
public long getItemId(int position) | 根据position(位置)获取某个item的ID |
public View getView(int postion,View convertView,ViewGroup parent) | 获取相应position对应的intent视图,position是当前Item的位置,convertView用于复用旧视图,partent用于加载XML布局文件 |
(2)SimpleAdapter
SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法并将方法进行封装。因此在使用SimpleAdaper进行数据适配时,只需要在构造方法中传入相应的参数即可。SimpleAdapter的构造方法的具体信息如下:
public SimpleAdater(Context context,List<? extends Map<String,?>> data,
int resource,String[] from,int[] to)
上述5个参数含义如下:
context:上下文对象。
data:数据集合。data中的每一项对应ListView控件中条目的数据。
resource:Item布局的资源id。
from:Map集合中的key值。
to:Item布局中对应的控件。
(3)ArrayAdapter
ArrayAdapter也是BaseAdapter的子类,用法与SimpleAdapter类似,开发者只需要在构造方法里面传入相应的参数即可。ArrayAdapter通常用于适配TextView控件,例如Android中的Setting(设置菜单)。ArrayAdapter有多个构造方法,具体信息如下:
public ArrayAdapter(Context context,int resource);
public ArrayAdapter(Context context,int resource,int textViewResourceId);
public ArrayAdapter(Context context,int resource,T[] objects);
public ArrayAdapter(Context context,int resource,int textViewResourceId,T[] objects);
public ArrayAdapter(Context context,int resource,List<T> objects);
public ArrayAdapter(Context context,int resource,int textViewResourceId,List<T> objects);
context:Context上下文对象。
resource:Item布局的资源id。
textViewResourceId:Item布局中相应TextView控件的id。
T[] objects:需要适配数组类型的数据
List<T> objects:需要适配List类型的数据。
在创建数据适配器后,可通过ListView控件的setAdapter()方法添加数据适配器,如将继承BaseAdapter的MyBaseAdapter实例添加到ListView控件中,示例代码如下:
ListView mListView=(ListView) findViewById(R.id.lv);//初始化ListView控件
MyBaseAdapter mAdapter=new MyBaseAdapter();//创建MyBaseAdapter实例
mListView.setAdapter(mAdapter);//设置数据适配器到ListView控件上