Button(按扭)_UI组件_Android
参考:
- Button 控件继承
TextView
,拥有TextView
的属性
定义案例:
btn_bg1.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/color1" android:state_pressed="true"/>//按扭被按下的状态
<item android:drawable="@color/color4" android:state_enabled="false"/>//按扭禁用颜色
<item android:drawable="@color/color3" />
</selector>
layout_btn.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="50dp">
<Button
android:id="@+id/btnOne"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@drawable/btn_bg1" //引入StateListDrawable
android:text="按钮"
android:textColor="#ffffff"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:id="@+id/btnTwo"
android:layout_width="match_parent"
android:layout_height="64dp"
android:text="按钮不可用"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
MainActivity.java
public class MainActivity extends Activity {
private Button btnOne,btnTwo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnOne = (Button) findViewById(R.id.btnOne);
btnTwo = (Button) findViewById(R.id.btnTwo);
btnTwo.setOnClickListener(new OnClickListener() { //按钮绑定点击事件
@Override
public void onClick(View v) {
if(btnTwo.getText().toString().equals("按钮不可用")){
btnOne.setEnabled(false);
btnTwo.setText("按钮可用");
}else{
btnOne.setEnabled(true);
btnTwo.setText("按钮不可用");
}
}
});
}
}
Button的三种点击事件
当布局控件的Button设置好id,并设置好点击事件android:onClick="onClick"
第一种,也是最简单的,只需要设置好点击事件即可
public void onClick(View view){}
是不是很简单,如果有多个Button的时候可以这样写
public void onClick(View view){
switch(view.getId()){
case R.id.button1:
break;
case R.id.button2:
break;
}
}
第二种
findViewById(R.id.btn_click_one).setOnClickListener(new onClickListener(){
public void onClick(View view){}
});
第三种就是第二种的演变
findViewById(R.id.btn_click_one).setOnClickListener( listener)
Button.OnClickListener listener = new Button.OnClickListener(){//创建监听对象
public void onClick(View v){
String strTmp="点击Button02";
Ev1.setText(strTmp);
}
匿名内部类的第二种响应速度快一些,
按钮多的时候建议用第一种,方便,当然有时候第一种情况也不能用,比如重写View的时候,onclick的view就会冲突