最近学习了安卓中的一些控件的基础用法,在这里做一个总结。
ImageView
ImageView是安卓界面中常用的图片承载容器,有一点需要注意:在ImageView的属性中,可以分别为其设置ImageView的内容图像
即android:src=”@drawable/ic_launcher” ,也可以设置ImageView背景图片既android:background=”@drawable/ic_launcher”。
使用src设置时,图片会根据本身的分辨率正常显示,但实用background属性时,图片会填充整个控件,这是两个属性最大的不同点,但有时这个特性也会非常实用。
Button
在android界面中,有两种button:
- Button
- ImageButton
结合监听事件,这两种button都可以起到按钮的作用。不同的是,ImageButton更像是一个有ImageView功能的Button,拥有src和background属性,却没有普通button拥有的text属性。因此要想在ImageButton上显示文字,需要单独制作带文字的图片。不过这也为丰富按钮样式提供了一种思路。
提到按钮,免不了要提到监听事件。在代码的编写中,常用的实现监听的方法主要有三种:
1.匿名内部类
loginButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0){
System.out.println("来自匿名内部类");
}
});
2.外部类
loginButton.setOnClickListener(new MyOnClistener(){
//OnClickListener是一个接口,只能用implements
@Override
public void onClick(View v) {
super.onClick(v);
//super,执行时不仅执行子类中的方法,也调用父类的onClick方法
Toast.makeText(MainActivity.this , "b1要执行的逻辑" , 1).show();
}
});
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
Log.i("tag", "父类的onClick事件");
//让所有实用当前外部类的点击事件的按钮都作出同一个动作
}
}
3.接口
public class MainActivity extends Activity implements OnClickListener {
b3.setOnClickListener(this);
@Override
public void onClick(View v) {
Log.i("tag", "第三种方式实现");
}
}
动态自动匹配输入内容
主要是利用了AutoCompleteTextView和MultiAutoCompleteTextView,前者是单次匹配,后者可以多次匹配。
android:completionThreshold = “2” —— 设置输入2个字符时开始自动匹配
mtxt.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());设置逗号分隔符
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
public class MainActivity extends Activity {
private AutoCompleteTextView acTextView;
private String[] res = { "beijing1", "beijing2", "beijing3", "shanghai1", "shanghai2", "shanghai3" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*
* 第一步:初始化控件
* 第二步:需要一个适配器
* 第三步:初始化数据源---数据源去匹配文本框输入的内容
* 第四步:将adapter与当前AutoCompleteTextView控件绑定
*/
acTextView = (AutoCompleteTextView)
findViewById(R.id.autoCompleteTextView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, res);
acTextView.setAdapter(adapter);
}
}
/*
* MultiAutoCompleteTextView
* 第一步:初始化控件
* 第二步:需要一个适配器(这里与上面用了同一个适配器)
* 第三步:初始化数据源---数据源去匹配文本框输入的内容
* 第四步:将adapter与当前MultiAutoCompleteTextView控件绑定
* 第五步:设置分隔符
*/
private MultiAutoCompleteTextView macTextView;
macTextView = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1);
macTextView.setAdapter(adapter);
//设置以逗号(comma)为分隔符为结束的符号
macTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
复选框
checkBox
/*
* CheckBox
* 第一步:初始化
* 第二步:通过设置checkBox的监听事件来判断是否被选中
*/
cb1 = (CheckBox) findViewById(R.id.checkBox1);
cb1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
/*
* 通过这个匿名内部类来监听当前的checkBox是否被选中
*/
if (isChecked){
//获得checkBox的文本内容
String text = cb1.getText().toString();
Log.i("checkBox'text", text);
}
}
});
一般都会设置多个checkBox以便用户可以进行多选,则需要对submit按钮设置监听setOnClickListener,在提交时统计checkBox的情况。
submit.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int num=0;
if(checkbox1.isChecked())
{
num++;
}
if(checkbox2.isChecked())
{
num++;
}
if(checkbox3.isChecked())
{
num++;
}
if(checkbox4.isChecked())
{
num++;
}
DisplayToast("您一共选择了"+num+"款Android手机!");
}
});
RadioGroup和RadioButton
在一个RadioGroup中可以包含多个RadioButton,但是用户每次只能选中一个RadioButton。利用监听事件,可以获得当前选中的radioButton。
/*
* RadioGroup
* 第一步:初始化
* 第二步:实现RadioGroup的监听事件
*
*/
rg = (RadioGroup) findViewById(R.id.radioGroup1);
rg.setOnCheckedChangeListener(new android.widget.RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.radio0:
Log.i("tag", "当前选择:男");
break;
case R.id.radio1:
Log.i("tag", "当前选择:女");
break;
default:
break;
}
}
});