Button按钮
框架结构:
一、继承结构
- 由于Button是继承于TextView的,因此,TextView中的常用属性,Button也能使用
二、两种点击方式
方式一:
1. 在布局文件中给Button按钮添加onClick属性,属性值为任意字符串(此字符串用于设置按钮被点击时运行的方法的方法名)。
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="click"
android:text="登录"
android:id="@+id/but_login"
/>
2.在java代码中(在显示了此Button的Activity子类中)创建onClick属性中指定的方法
/*
* 设置按钮点击事件的方式一:通过onClick属性+自定义方法实现
* */
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/*
* 创建按钮被点击时运行的方法
* 要求如下:
* 1. 该方法必须是public void
* 2. 该方法的方法名称必须与onClick中的属性值完全一致
* 3. 该方法的参数列表必须有且只有一个View类型的参数
*
* 参数的作用:参数代表的是当前被点击的控件对象
* */
public void click(View v) {
//v.getId()方法用于获取当前被点击的按钮对应的id属性的值
switch (v.getId()) {
case R.id.but_login:
System.out.println("登录按钮被点击啦!!!!!!");
break;
case R.id.but_register:
System.out.println("注册按钮被点击啦!!!!!!########");
break;
}
}
}
方式二:
获取控件对象+通过控件对象调用setOnClickListener方法设置点击事件
根据setOnClickListener方法参数的不同传递方式分为以下3小种:
a. 通过匿名内部类方式
public class TwoActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//获取按钮对象
Button but = (Button) findViewById(R.id.but1);
//通过按钮对象设置点击事件
but.setOnClickListener(new OnClickListener() {
//一旦按钮被点击,就会运行下方的onClick方法
@Override
public void onClick(View v) {
// android中的输出:作用等同于System.out.println
/*
* 参数1: 稍后会被显示在LogCat的Tag标签中
* 参数2: 稍后会被显示在LogCat的Text标签中
* */
Log.i("oye", "我是安卓的打印@@@@ ");
}
});
}
}
b. 让当前类实现onClickListener接口,在setOnClickListener方法中传递当前类对象.
public class ThreeActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//获取按钮对象
Button but = (Button) findViewById(R.id.but1);
//通过按钮对象设置点击事件
but.setOnClickListener(this);
}
//一旦按钮被点击,就会运行以下onclick方法
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
c. 创建一个onClickListener的实现子类,在setOnClickListener方法中传递子类对象.
public class FourActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//获取按钮对象
Button but = (Button) findViewById(R.id.but1);
//通过按钮对象设置点击事件
but.setOnClickListener(new MyListener());
}
class MyListener implements OnClickListener {
//按钮一旦被点击,就会运行以下onClick方法
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
}