1. 程式人生 > >Button一些屬性和幾種監聽事件

Button一些屬性和幾種監聽事件

介紹:

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是完全透明
    }
}