最近在学Android,前后算起来都半个月了,可还是没什么进步,都是些控件。发现控件虽不难,但是很多,脑子一团凌乱,因此整理了一下,以便使用。
作用:显示文本框。
常用属性:
android:id --控件的id
android:layout_width --控件宽度
android:layout_height --控件高度
android:text --文本内容
android:textSize --字体大小
android:textColor --字体颜色
android:background --控件背景(格式:#123def,或用图片)
android:singleLine="true" --让这个 TextView 只能单行显示
android:padding="10dp" --给控件的周围加上补白,不让文本紧靠边缘
android:ellipsize="end" --设定文本内容超出控件宽度时,文本的缩略方式(这里指定成 end 表示在尾部进行缩略)
注意:若在XML中引用一个id,则使用@id/id_name语法;而若在XML中定义一个id,则要使用@+id/id_name语法。
作用:编辑文本框。
常用属性:
android:id --控件的id
android:layout_width --控件宽度
android:layout_height --控件高度
android:text --文本内容
android:textSize --字体大小
android:textColor --字体颜色
android:background --控件背景
——————前面同TextView——————————
android:hint --提示文本
android:inputType --输入文本类型
android:maxLines --最大行数
作用:显示图片
常用属性:
android:src="@drawable/ic_launcher" --ImageView内容图片(引号内为文件路径)
android:background="@drawable/ic_launcher" --ImageView背景图片
android:background="#ff0ff0" --ImageView背景颜色
android:scaleType="fitXY" --让这张图片填充满整个控件
注:除在XML文件中指定图片资源外,还可在代码区更改图片。
示例代码:
imageView.setImageResource(R.drawable.zoro);
作用:按钮
常用属性:
作用:图片按钮
常用属性:
< ImageButton
android:id= "@+id/imageButton1"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
android:src= "@drawable/ic_launcher"
android:background= "#000000" />
注:
1. ImageButton的android:text属性不能直接赋值。
2. Button 和 ImageButton 都有一个 onClick 事件,通过自身.setOnClickListener(OnClickListener)方法添加点击事件。
3. 实现监听的3种方式。
作用:进度条。
常用属性:
"visible" --可见性(默认显示,可以不写)
android:id= "@+id/progressBar1"
android:layout_width= "wrap_content"
android:layout_height= "wrap_content"
style= "?android:attr/progressBarStyleHorizontal" --设置进度条风格为水平
android:max="100" --给进度条设置最大值
/>
注:android:visibility,控件的可见性(所有控件都有的属性)。有三种状态,即:
1. visible: 可见,默认状态
2. invisible: 不可见,但仍占据原来位置
3. gone: 不可见,且不占用空间此外,还可通过代码设置控件可见性。用setVisibility()方法,可以传入View.VISIBLE、View.INVISIBLE和View.GONE三种值。(getVisibility()方法可获取当前状态)
作用:当前界面弹出对话框。常用于弹出一些非常重要的内容或警告信息。
示例代码:
AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
dialog.setTitle("This is a Dialog");
dialog.setMessage("Sure to delete ?");
dialog.setCancelable(false); //
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//添加事件处理
}
});
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//添加事件处理
}
});
dialog.show(); //注意要show出来
上述代码也可以一句话写出来,如下所示:
new AlertDialog.Builder(TestAlertDialog.this).setTitle("Alert Information")
.setMessage("Are you ready?")
.setPositiveButton("Yes", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(TestAlertDialog.this, "Let's begin!", Toast.LENGTH_SHORT).show();
}
}).setNegativeButton("No", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setCancelable(false).show();
如下所示:
此时,点击“Yes”会在屏幕显示”Let’s begin!”;而点击“No”则退出程序。
注意:
1. AlertDialog无需添加XML布局文件,直接在代码区调用即可。
2. 此处不能用 Back 键关闭对话框;若 setCancelable 为 true 或者不设置,则可以用 Back 键关闭对话框。
作用:和AlertDialog类似,在当前界面弹出一个对话框。区别是会在对话框显示一个进度条,一般是操作比较耗时,让用户耐心等待。
示例代码:
ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setTitle("This is a ProgressDialog");
progressDialog.setMessage("Please waiting...");
progressDialog.setCancelable(true); //可通过Back键取消掉
progressDialog.show();
注意:progressDialog.setCancelable(false):表示 ProgressDialog 不能通过 Back 键取消掉。此刻就要在代码中做好控制,当数据加载完成后必须要调用 ProgressDialog 的dismiss()方法来关闭对话框, 否则 ProgressDialog 将会一直存在。
作用:自动匹配字符(常用于搜索框输入提示)
属性:
android:completionThreshold="3" --设置输入多少字符开始匹配 (即阈值)
作用:多选择的自动匹配字符。
可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在每个值选中的时候再次输入值时会自动去匹配,可用于发邮件、短信时选择多个联系人。
属性:
android:completionThreshold="3" //设置输入多少字符开始匹配 (同AutoCompleteTextView )
macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); //设置逗号分隔符
作用:切换按钮,点击可产生切换效果
注:点击按钮可使文字和图片来回切换。
常用属性:
android:checked="false" --选中textOff(反之选中textOn)
android:textOn= "on" --设置On状态
android:textOff= "off" --设置Off状态
事件监听器:OnCheckedChangeListener
作用:多选框
常用属性:
android:checked="true/false" --默认false,即未选中(可以不写)
作用:常用作性别选择等多选一选框,且点击选择后不能取消选择状态。
RadioButton & RadioGroup区别与联系:
- RadioButton表示一个单选框,而RadioGroup是可以容纳多个RadioButton的容器
- 每个RadioGroup中的RadioButton同时只能有一个被选中
- 不同RadioGroup中的RadioButton互不相干
- 一般情况,一个RadioGroup中至少有2个RadioButton
- 一般情况,一个RadioGroup中的RadioButton默认会有一个被选中,并建议您将它放在RadioGroup中的起始位置
参考:Android控件系列之RadioButton&RadioGroup
注:RadioGroup中的RadioButton状态改变既可以通过RadioButton来监听也可以通过RadioGroup来监听。
RadioGroup 和 RadioButton 的点击事件具体用法见 RadioGroup 和 RadioButton 点击事件 。
作用:实现页面之间的跳转。
感觉该控件略复杂,因此记在了另外一篇笔记 Intent控件 上。
作用:显示列表
注:这是图文类型,也可以使用纯文字类型列表。
监听器:OnItemClickListener,OnScrollListener
即适配器。
作用:把复杂的数据(数组、链表、数据库、集合等)填充在指定视图界面上,是连接数据源和视图界面的桥梁。
数组适配器:绑定格式单一的数据。
数据源类型:集合或数组。
示例代码:
String[]arr_data = {"曹操", "刘备", "孙权"}; //定义数据源
private ArrayAdapter arr_adapter;
arr_adapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1 , arr_data);
//参数:ArrayAdapter(上下文,当前ListView加载的每一个列表项对应的布局文件,数据源);
listview.setAdapter(arr_adapter); //添加适配器(建立ListView和数据之间的关联)
// android.R.layout.simple_list_item_1: Android 内置的布局文件,里面只有一个 TextView
简单适配器:绑定格式复杂的数据。
数据源类型:只能是特定泛型的集合。
示例代码:
private SimpleAdapter simp_adapter;
/*
* SimpleAdapter参数:
* context: 上下文
* data: 数据源(List extends Map>data)一个Map所组成的List集合
* 每一个Map(键-值对)都会对应ListView中的一行
* resource:列表项的布局文件
* from:Map中的键名
* to: 绑定数据视图中的ID,与from对应
*/
simp_adapter = new SimpleAdapter(this, getData(), R.layout.item, new String[]{"img", "txt"}, new int[]{R.id.img1, R.id.txt1});
作用:日期/时间 选择器
//获取日历的一个对象
cal = Calendar.getInstance();
year = cal.get(Calendar.YEAR); //获取年
month = cal.get(Calendar.MONTH) + 1; //获取月份(注意:此处月份从0开始,因此需要加1)
day = cal.get(Calendar.DAY_OF_MONTH);
hour = cal.get(Calendar.HOUR_OF_DAY);
minute = cal.get(Calendar.MINUTE);
作用:日历选择器
DatePicker实现日历选择器,示例代码:
datePicker.init(year, month, day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
setTitle(year + "." + (monthOfYear+1) + "." + dayOfMonth); //设置标题
}
});
注:
1. 当用户更改了DatePicker里的年月日时,OnDateChangedListener监听器的OnDateChanged()事件触发。
2. 当用户更改了TimePicker里的年月日时,OnTimeChangedListener监听器的OnTimeChanged()事件触发
作用:时间选择器
TimePicker实现时间选择器,示例代码:
timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay + ":" + minute);
}
});
注意:
1. DatePicker以init()方法初始化年月日及 OnDateChangedListener()事件;
而TimePicker则以setOnTimeChangedListener()事件来处理操作。
2. 此二者都是直接在屏幕上显示,而下面两个dialog则是以对话框形式显示的。
作用:实现 日期/时间 选择对话框
作用:实现日期选择对话框
DatePickerDialog实现日期选择对话框,示例代码:
new DatePickerDialog(this, new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
setTitle(year + "." + (monthOfYear+1) + "." + dayOfMonth);
}
}, year, cal.get(Calendar.MONTH), day).show(); //勿忘show()
注:当用户更改了DatePickerDialog的年月日时,OnDateSetListener监听器的OnDateSet()事件触发。
作用:实现时间选择对话框
TimePickerDialog实现时间选择对话框,示例代码:
new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay + ":" + minute);
}
}, hour, minute, true).show(); //最后一个参数:是否24小时制
注:当用户更改了TimePickerDialog的年月日时,OnTimeSetListener监听器的OnTimeSet()事件触发。
android:numColumns="auto_fit" --每一行显示多少列(auto_fit自动适应)
android:horizontalSpacing= "ndp" --两列之间的间距
android:verticalSpacing= "ndp" --两行之间的间距
监听器事件:OnItemClickListener
数据源类型:SimpleAdapter
注:部分图片来自慕课网视频截图。
PS:花些时间整理一下还是很有用的,既能回顾梳理以前的知识,也能帮助日后查询。而且,总结中还发现不少问题。