1. 程式人生 > >Android -- Button(按鈕)的幾種監聽方式

Android -- Button(按鈕)的幾種監聽方式

之前寫了一篇關於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較多的時候使用
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;
		}

	}
3)  在XML檔案中給Button加上onClick屬性,然後在.java檔案中寫一個以onClick屬性的值為方法名的一個方法,該方法一般用來做測試的時候使用較多,建議儘量不適用這種方法
<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;

			}
		}
	};

總結: 對於按鈕的點選監聽事件,常用的是第一種和第二種方式,第三種方式一般用於測試,不推薦使用