Button一些屬性和幾種監聽事件
阿新 • • 發佈:2018-11-19
介紹:
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是完全透明
}
}