【Android程序開發(fā)】Button使用詳解

目錄

  • 1.Button的繼承關(guān)系
  • 2.Button 點擊事件
  • 3.Button 簡單使用舉例
  • 4.自定義Button選擇器

具體操作

一、Button的繼承關(guān)系

Button繼承TextView,其具體關(guān)系如下:

>java.lang.Object
   ?    android.view.View
       ?    android.widget.TextView
           ?    android.widget.Button
二、Button 點擊事件
實現(xiàn)Button點擊事件的方法(一)-onClick 屬性

1.在xml文件配置一個onClick屬性,設(shè)置一下點擊事件的方法名

  • xml布局使用
     <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Edit"
        android:textColor="#ff0000"
        android:textSize="25sp"
        android:onClick="login"
       />
  • java代碼中點擊實現(xiàn) 效果
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
           }
    public void login(View view){
        System.out.println("點擊了");
  }
}   
實現(xiàn)Button點擊事件的方法(二)-通過java代碼實現(xiàn)
  • xml布局使用
<Button
        android:id="@+id/bt_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Edit"
        android:textColor="#ff0000"
        android:textSize="25sp"
       />   
  • java代碼中點擊實現(xiàn)效果
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
         //給按鈕添加點擊事件
        btn.setOnClickListener(this);
       }
       @Override
    public void onClick(View view) {
        //因為view里面沒有Button類型,所以使用的時候轉(zhuǎn)換為對應的子類類型
        Button btn=(Button)view;
         //更改按鈕的標題
        btn.setText("退出");
     }
}

!!!按鈕的點擊事件 通常接收一個參數(shù):View . 當按鈕被點擊,系統(tǒng)接收這個事件,并把這個事件回調(diào)給監(jiān)聽者

三、Button 簡單使用舉例
Button簡單小demo(一)

實現(xiàn)一個按鈕(比如:按鈕的標題是Done,點擊一下后標題就變成了Edit,類似這樣,隨著不同的點擊,按鈕的標題在DoneEdit之間不斷的切換)

未命名文件.jpg

  • 第一種方法:
    1.xml布局使用
    <Button
        android:tag="1"
        android:id="@+id/bt_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Edit"
        android:textColor="#ff0000"
        android:textSize="25sp"
       />

2.java代碼中點擊實現(xiàn)效果

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
         //給按鈕添加點擊事件
        btn.setOnClickListener(this);
       }
       @Override
    public void onClick(View view) {
        //因為view里面沒有Button類型,所以使用的時候轉(zhuǎn)換為對應的子類類型
        Button btn=(Button)view;
        if(btn.getText().equals("Edit")){
            //更改按鈕的標題
            btn.setText("Done");
        }else{
            btn.setText("Edit");
        }
     }
}

該方法是有局限的,因為不能保證程序里面一定是文本!!!

  • 第二種方法:(添加一個boolean變量)
    1.xml布局使用
    <Button
        android:tag="1"
        android:id="@+id/bt_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Edit"
        android:textColor="#ff0000"
        android:textSize="25sp"
       />

2.java代碼中點擊實現(xiàn)效果

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    boolean isnormal=true;
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
         //給按鈕添加點擊事件
        btn.setOnClickListener(this);
       }
       @Override
    public void onClick(View view) {
        //因為view里面沒有Button類型,所以使用的時候轉(zhuǎn)換為對應的子類類型
        Button btn=(Button)view;
        //判斷狀態(tài)
        if(isnormal){
            btn.setText("Done");
        }else{
            btn.setText("Edit");
        }
        isnormal=!isnormal;
     }
}

這個方法可能還不太好。因為無形之中添加了一個boolean變量,可能會出現(xiàn)一個問題:按鈕的狀態(tài)不能直接被知道,而是要通過boolean變量是True還是false,間接被知道

未命名文件(1).jpg

  • 第三種方法:(按鈕本身自動獲取按鈕自己的點擊狀態(tài),通過添加一個Tag值)
    1.xml布局使用
   <Button
        android:tag="1"
        android:id="@+id/bt_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Edit"
        android:textColor="#ff0000"
        android:textSize="25sp"
       />
  1. java代碼中點擊實現(xiàn)效果
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
         //給按鈕添加點擊事件
        btn.setOnClickListener(this);
       }
       @Override
    public void onClick(View view) {
        //因為view里面沒有Button類型,所以使用的時候轉(zhuǎn)換為對應的子類類型
        Button btn=(Button)view;
        if(btn.getTag().equals(1)){
            btn.setText("Done");
            btn.setTag("0");
        }else{
            btn.setText("Edit");
            btn.setTag("1");// btn.setTag(1); 這樣不行
        }
     }
}

設(shè)置tag值的時候,tag值應該用雙引號括起來. 例如:
btn.setTag("1"); 正確
btn.setTag(1); 錯誤

Button簡單小demo(二)

在demo(一)的基礎(chǔ)上,再設(shè)置兩個按鈕,實現(xiàn)點擊其中一個按鈕,則另一個按鈕才有效(才能點擊),否則該按鈕無效


未命名文件(2).jpg
  • 第一種方法
    1.xml布局使用
 <Button
        android:tag="1"
        android:id="@+id/bt_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"

        android:text="Edit"
        android:textColor="#ff0000"
        android:textSize="25sp"
       />
    <Button
        android:id="@+id/bt_done"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="完成"
        android:layout_below="@+id/bt_login"
        android:layout_marginTop="20dp"
        android:enabled="false"/>
    <Button
        android:id="@+id/bt_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="編輯"
        android:layout_alignTop="@+id/bt_done"
        android:layout_alignRight="@+id/bt_login"
        />

2.java代碼中點擊實現(xiàn)效果

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Button btn;
    Button done;
    Button edit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
        done=findViewById(R.id.bt_done );
        edit=findViewById(R.id.bt_edit);

        //給按鈕添加點擊事件
        btn.setOnClickListener(this);
        done.setOnClickListener(this);
        edit.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        //因為view里面沒有Button類型,所以使用的時候轉(zhuǎn)換為對應的子類類型
        Button btn=(Button)view;
        if(btn.getId()==R.id.bt_login) {
            if (btn.getTag().equals(1)) {
                btn.setText("Done");
                btn.setTag("0");
            } else {
                btn.setText("Edit");
                btn.setTag("1");// btn.setTag(1); 這樣不行
            }
        }
        if(btn.getId()==R.id.bt_edit){
            done.setEnabled(true);
            edit.setEnabled(false);
        }
        if(btn.getId()==R.id.bt_done){
            done.setEnabled(false);
            edit.setEnabled(true);
        }
    }
  • 第二種方法
    xml中代碼和第一種方法一樣
    java代碼中點擊實現(xiàn)效果
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Button btn;
    Button done;
    Button edit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
        done=findViewById(R.id.bt_done );
        edit=findViewById(R.id.bt_edit);
         btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
             if (btn.getTag().equals(1)) {
                btn.setText("Done");
                btn.setTag("0");
            } else {
                btn.setText("Edit");
                btn.setTag("1");// btn.setTag(1); 這樣不行
            }
            }
        });
        done.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                  done.setEnabled(false);
                  edit.setEnabled(true);
            }
        });
        edit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                done.setEnabled(true);
                edit.setEnabled(false);
            }
        });
  • 第三種方法(使用lamda表達式)
    1.xml中代碼和第一種方法一樣
    2.java代碼中點擊實現(xiàn)效果
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Button btn;
    Button done;
    Button edit;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //通過id號找到按鈕
        btn=findViewById(R.id.bt_login);
        done=findViewById(R.id.bt_done );
        edit=findViewById(R.id.bt_edit);
        
        btn.setOnClickListener(view -> {
            if (btn.getTag().equals(1)) {
                btn.setText("Done");
                btn.setTag("0");
            } else {
                btn.setText("Edit");
                btn.setTag("1");// btn.setTag(1); 這樣不行
            }
        });
        done.setOnClickListener(view->{
            done.setEnabled(false);
            edit.setEnabled(true);
        });
        edit.setOnClickListener(view -> {
            done.setEnabled(true);
            edit.setEnabled(false);
        });
    }
4.自定義Button選擇器

1.xml布局使用

 <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="分享"
        android:textColor="@drawable/test_color" />

2.Button背景選擇器實現(xiàn)

新建一個配置文件
drawable->new->Drawable resource file

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--按下狀態(tài)的顏色 pressed-->
    <item android:color="#ff0000"
        android:state_pressed="true"/>
    <!--無效 無法點擊的顏色 enable-->
    <item android:color="#00ff00"
        android:state_enabled="false"/>
    <!--默認狀態(tài)-->
    <item android:color="#000000"/>
</selector>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容