介绍:
TextView与Button是继承关系,Button继承自TextView。开发中一般情况下,TextView用来承载静态文本,Button用来响应点击事件。很多人容易忽略的一点是TextVIew也有点击事件,TextView 继承自View,点击事件是从View就有的特性,所以TextView也能点击。所以Button和Textview的一些属性是通用的。
Button属性:
android:drawable //放一个drawable资源
android:drawableTop //可拉伸要绘制的文本的上面
android:drawableBottom //可拉伸要绘制的文本的下面
android:drawableLeft //可拉伸要绘制的文本的左侧
android:drawableRight //可拉伸要绘制的文本的右侧
android:text //设置显示的文本
android:textColor //设置显示文本的颜色
android:textSize //设置显示文本字体大小
android:background //可拉伸使用的背景
android:onClick //设置点击事件
监听事件:监听事件有三种(两种常用的,一种不常用的)
(常用)实现接口的方式实现:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//实现View.OnClickListener接口
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button)findViewById(R.id.b1); //把But进行强转
button.setOnClickListener(this); //绑定监听
}
@Override
//重写onClick方法
public void onClick(View v) {
Toast.makeText(MainActivity.this,"点了一下",Toast.LENGTH_SHORT).show();
}
}
(常用) 匿名内部类的方法实现:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.b1); //把But进行强转
//匿名内部类
button.setOnClickListener(new View.OnClickListener() {
//重写onCLick方法
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "点了一下", Toast.LENGTH_SHORT).show();
}
});
}
}
(不常用)独立类的实现:
用于多个按钮被点击后需要执行相同的代码段时,可将相同的代码段在父类中实现
public class MainActivity extends AppCompatActivity {
/*
1.初始化所需控件
*/
private Button myButton;
private ImageButton myImageButton;
//初始化函数
public void init(){
myButton = (Button) findViewById(R.id.myButton1);
myImageButton = (ImageButton)findViewById(R.id.myImageButton1);
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置监听器(外部类的方法)
myButton.setOnClickListener(new MyOnClickListener(){
@Override
public void onClick(View view) {
super.onClick(view);
Toast.makeText(MainActivity.this,"Button1被点击",Toast.LENGTH_LONG).show();
}
});
myImageButton.setOnClickListener(new MyOnClickListener(){
@Override
public void onClick(View view) {
super.onClick(view);
Toast.makeText(MainActivity.this,"Button2被点击",Toast.LENGTH_LONG).show();
/*Toast.makeText(Context:context,CharSequence:text,int duration).show(),
的第三个参数只能传Toast.LENGTH_SHORT或Toast.LENGTH_LONG,他们反别对应的值可以按住ctrl点击鼠标左键查看*/
}
});
}
}
//外部类,实现父类方法。
class MyOnClickListener implements View.OnClickListener{
@Override
public void onClick(View view) {
view.setAlpha(0.5f);//设置按钮的透明度,0-1,1是不透明,0是完全透明
}
}