一、Android 常用控件之TextView
- 概念:用来显示文本的空间,被称之为文本域
- text:显示的内容
- textSize:文字的大小
- textColor:文字的颜色
- visibility:可见性(默认是可见:invisible表示不可见,但是空间区域做了保留,gone:可以隐藏控件,并且当前控件的区域不做保留)
- maxLength:最大程度
- maxLines:最大行数
- autoLink:自动链接的类型
二、Android Button按钮的四种监听
使用匿名内部类的形式进行设置
//XML部分
<Button android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
//Java部分
//通过id找到关联布局中的id为btn的view控件
Button btn = (Button) findViewById(R.id.btn);
//给Button按钮添加点击的监听
btn.setOnClickListener(new OnClickListener() {
//只要当前的设置的监听器被触发,这个方法就会被执行
@Override
public void onClick(View v) {
Log.i("TAG","点击了BTN按钮");
}
});
在XML文件中定义onClick属性,在java代码中书写对应的代码
//XML中代码
<Button android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="doit"
android:text="点击"/>
//Java中的代码
public void doit(View view){
Log.i("TAG","点击了BTN按钮");
}
Activity实现onClickListener接口
//XML部分
<Button android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
//Java部分
//首先当前Activity类要实现OnClickListener接口,并重写其下的方法
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到控件的id,也叫控件的初始化
Button btn = (Button) findViewById(R.id.btn);
//给Button按钮设置点击的监听
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Log.i("TAG","点击了BTN按钮");
}
}
其他类实现OnClickListener接口
//XML部分
<Button android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击"/>
//JAVA部分
public class MainActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到控件的id
Button btn = (Button) findViewById(R.id.btn);
//传入实现了OnClickListener接口的类对象
btn.setOnClickListener(new MyListener());
}
//定义一个类来实现OnClickListener接口
class MyListener implements OnClickListener{
//v就是触发点击的View控件
@Override
public void onClick(View v) {
Log.i("TAG","点击BTN按钮");
}
}
}
多个按钮绑定点击事件
//XML部分
<Button android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮1"/>
<Button android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="按钮2"/>
//Java部分
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyListener myListener = new MyListener();
// 初始化按钮控件
Button btn1 = (Button) findViewById(R.id.btn1);
Button btn2 = (Button) findViewById(R.id.btn2);
// 为按钮绑定监听事件
btn1.setOnClickListener(myListener);
btn2.setOnClickListener(myListener);
}
// 定义一个类来实现OnClickListener接口
class MyListener implements OnClickListener {
@Override public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1: Log.i("TAG","点击了BTN1按钮");
break;
case R.id.btn2: Log.i("TAG","点击了BTN2按钮");
break;
default:
break;
}
}
}
}
三、CheckBox和RadioButton
CheckBox:是用来进行多选的按钮
- CheckBox是选择框,只有选中或未选中两种状态,一般会用在复选按钮操作上,表示可以有多个选项提供进行勾选
- 一般会使用在多个选项都可以选择的情况下,例如:选择自身的爱好
- OnCheckedChangeListener是定义在CompoundButton下的监听对象。因为CheckBox是CompoundButton的子类,所以可以直接使用
//XML部分
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.mogon.MainActivity">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="请选择你的爱好:"/>
<CheckBox android:id="@+id/footBall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="足球" />
<CheckBox android:id="@+id/swim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="游泳" />
<CheckBox android:id="@+id/basketBall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="篮球" />
<CheckBox android:id="@+id/sleep"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="睡觉" />
<Button android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查看选中" />
</LinearLayout>
//Java部分
public class MainActivity extends Activity {
private Button check;
private CheckBox footBall, swim, basketBall, sleep;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 控件初始化
check = (Button) findViewById(R.id.check);
footBall = (CheckBox) findViewById(R.id.footBall);
swim = (CheckBox) findViewById(R.id.swim);
basketBall = (CheckBox) findViewById(R.id.basketBall);
sleep = (CheckBox) findViewById(R.id.sleep);
// 使用匿名内部类的形式进行按钮的点击监听
check.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showCheck();
}
});
}
private void showCheck() {
StringBuffer sb = new StringBuffer();
if (footBall.isChecked()) {
sb.append(footBall.getText().toString() + ",");
}
if (swim.isChecked()) {
sb.append(swim.getText().toString() + ",");
}
if (basketBall.isChecked()) {
sb.append(basketBall.getText().toString() + ",");
}
if (sleep.isChecked()) {
sb.append(sleep.getText().toString() + ",");
}
if (sb.length() > 0) {
String str = sb.substring(0, sb.length() - 1);
Toast.makeText(this, "选中的内容有:" + str, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "请选择你的爱好", Toast.LENGTH_SHORT).show();
}
}
}
Toast的使用
- 第一种方式
//XML部分
<RadioGroup android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/nan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"/>
<RadioButton android:id="@+id/nv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
//Java部分
public class MainActivity extends Activity {
private RadioButton nan,nv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
nan = (RadioButton) findViewById(R.id.nan);
nv = (RadioButton) findViewById(R.id.nv);
//给按钮添加选中的监听
nan.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Toast.makeText(MainActivity.this, "选中的是"+buttonView.getText(), Toast.LENGTH_SHORT).show();
}
}
});
nv.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Toast.makeText(MainActivity.this, "选中的是"+buttonView.getText(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
- 第二种方式
//XML部分
<RadioGroup android:id="@+id/radioGroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioButton android:id="@+id/nan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男"/>
<RadioButton android:id="@+id/nv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女"/>
</RadioGroup>
//Java部分public class MainActivity extends Activity {
RadioButton nan,nv;
RadioGroup readioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
readioGroup = (RadioGroup) findViewById(R.id.radioGroup);
nan = (RadioButton) findViewById(R.id.nan);
nv = (RadioButton) findViewById(R.id.nv);
//对RadioGroup进行OnCheckedChangeListener事件绑定
readioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId){
case R.id.nan:
Toast.makeText(MainActivity.this, "选中了"+nan.getText(), Toast.LENGTH_SHORT).show();
break;
case R.id.nv:
Toast.makeText(MainActivity.this, "选中了"+nv.getText(), Toast.LENGTH_SHORT).show();
break;
}
}
});
}
}
四、EditText组件
//XML部分
<!-- inputType:输入的类型,文本,数字,密文等等 -->
<!-- ems:文本框的长度 -->
<EditText android:id="@+id/editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"
android:ems="10"/>
EditText实现明文密文切换
//XML部分
<EditText android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:inputType="textPassword"
android:hint="请输入密码"/>
<CheckBox android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="查看密码"/>
//Java部分
public class MainActivity extends Activity {
private EditText editText;
private CheckBox checkBox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
editText = (EditText) findViewById(R.id.editText);
checkBox = (CheckBox) findViewById(R.id.checkBox);
//设置光标不可见 //editText.setCursorVisible(false);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
//显示明文
editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}else{
//显示密文
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
//将光标移动到文字的末尾
editText.setSelection(editText.getText().length());
}
});
}
}
- EditText的TextChangedListener监听事件
- onTextChanged文本变动
- beforeTextChanged文本变动之前
- afterTextChanged文本变动之后
五、ImageView显示图片的控件
//XML部分
<!-- background是指背景,src是指内容填充的资源,src如果是png格式等有透明属性的图片的话,
就会在透明的地方显示出设置的background的背景,而不是黑色或者其他系统默认的填充色等 -->
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
android:background="#ffff00"/>
//Java部分
public class MainActivity extends Activity {
private ImageView imgView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
imgView = (ImageView) findViewById(R.id.imgView);
imgView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "点击了ImageView", Toast.LENGTH_SHORT).show();
}
});
}
}
六、ImageButton来响应控件的点击效果
//XML部分
<ImageButton android:id="@+id/imgBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"/>