Android -- Button(按鈕)的幾種監聽方式
阿新 • • 發佈:2018-12-30
之前寫了一篇關於TextView的文章,今天說的是Button(按鈕),Button是程式用於和使用者進行互動的重要控制元件,它的屬性有些和TextView類似
一、Button屬性如下:
android:background 設定按鈕的背景,可以使用RGB的值來表示,也可以放一張圖片
android:focusable 設定按鈕是否有焦點,在ListView中按鈕會搶佔焦點,設定該屬性可以去掉焦點讓Item具有可點選事件
二、ImageButton控制元件
ImageButton是設定了圖片的Button
三、Button的監聽方式
1) 使用匿名內部類,一個控制元件對應一個監聽事件,當控制元件較少時使用比較好
button1 = (Button) findViewById(R.id.button1);
// 方法一
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "按鈕1被點選了", Toast.LENGTH_SHORT).show();
}
});
2) 使用實現介面的方式,多個控制元件對應一個監聽事件,該方法適用於Button較多的時候使用
3) 在XML檔案中給Button加上onClick屬性,然後在.java檔案中寫一個以onClick屬性的值為方法名的一個方法,該方法一般用來做測試的時候使用較多,建議儘量不適用這種方法public class MainActivity extends Activity implements OnClickListener { private Button button2; private Button button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button2 = (Button) findViewById(R.id.button2); button3 = (Button) findViewById(R.id.button3); // 方法二 button2.setOnClickListener(this); button3.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button2: Toast.makeText(MainActivity.this, "按鈕2被點選了", Toast.LENGTH_SHORT) .show(); break; case R.id.button3: Toast.makeText(MainActivity.this, "按鈕3被點選了", Toast.LENGTH_SHORT) .show(); break; } }
<Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onClick" android:text="按鈕監聽方式三" />
public void onClick(View view) {
Toast.makeText(MainActivity.this, "按鈕4被點選了", Toast.LENGTH_SHORT).show();
}
4) 多個按鈕對應一個監聽事件二private Button button1;
private Button button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
button2 = (Button) findViewById(R.id.button2);
button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
}
// 方法四
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Toast.makeText(MainActivity.this, "按鈕1被點選了", Toast.LENGTH_SHORT)
.show();
break;
case R.id.button2:
Toast.makeText(MainActivity.this, "按鈕2被點選了", Toast.LENGTH_SHORT)
.show();
break;
}
}
};
總結: 對於按鈕的點選監聽事件,常用的是第一種和第二種方式,第三種方式一般用於測試,不推薦使用