【Android程序开发】Button使用详解

目录

  • 1.Button的继承关系
  • 2.Button 点击事件
  • 3.Button 简单使用举例
  • 4.自定义Button选择器

具体操作

一、Button的继承关系

Button继承TextView,其具体关系如下:

>java.lang.Object
   ↳    android.view.View
       ↳    android.widget.TextView
           ↳    android.widget.Button
二、Button 点击事件
实现Button点击事件的方法(一)-onClick 属性

1.在xml文件配置一个onClick属性,设置一下点击事件的方法名

  • xml布局使用
     
  • java代码中点击实现 效果
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("点击了");
  }
}   
实现Button点击事件的方法(二)-通过java代码实现
  • xml布局使用
  • java代码中点击实现效果
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类型,所以使用的时候转换为对应的子类类型
        Button btn=(Button)view;
         //更改按钮的标题
        btn.setText("退出");
     }
}

!!!按钮的点击事件 通常接收一个参数:View . 当按钮被点击,系统接收这个事件,并把这个事件回调给监听者

三、Button 简单使用举例
Button简单小demo(一)

实现一个按钮(比如:按钮的标题是Done,点击一下后标题就变成了Edit,类似这样,随着不同的点击,按钮的标题在DoneEdit之间不断的切换)

【Android程序开发】Button使用详解_第1张图片
未命名文件.jpg

  • 第一种方法:
    1.xml布局使用
    

2.java代码中点击实现效果

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类型,所以使用的时候转换为对应的子类类型
        Button btn=(Button)view;
        if(btn.getText().equals("Edit")){
            //更改按钮的标题
            btn.setText("Done");
        }else{
            btn.setText("Edit");
        }
     }
}

该方法是有局限的,因为不能保证程序里面一定是文本!!!

  • 第二种方法:(添加一个boolean变量)
    1.xml布局使用
    

2.java代码中点击实现效果

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类型,所以使用的时候转换为对应的子类类型
        Button btn=(Button)view;
        //判断状态
        if(isnormal){
            btn.setText("Done");
        }else{
            btn.setText("Edit");
        }
        isnormal=!isnormal;
     }
}

这个方法可能还不太好。因为无形之中添加了一个boolean变量,可能会出现一个问题:按钮的状态不能直接被知道,而是要通过boolean变量是True还是false,间接被知道

【Android程序开发】Button使用详解_第2张图片
未命名文件(1).jpg

  • 第三种方法:(按钮本身自动获取按钮自己的点击状态,通过添加一个Tag值)
    1.xml布局使用
   
  1. java代码中点击实现效果
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类型,所以使用的时候转换为对应的子类类型
        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); 这样不行
        }
     }
}

设置tag值的时候,tag值应该用双引号括起来. 例如:
btn.setTag("1"); 正确
btn.setTag(1); 错误

Button简单小demo(二)

在demo(一)的基础上,再设置两个按钮,实现点击其中一个按钮,则另一个按钮才有效(才能点击),否则该按钮无效


【Android程序开发】Button使用详解_第3张图片
未命名文件(2).jpg
  • 第一种方法
    1.xml布局使用
 

2.java代码中点击实现效果

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类型,所以使用的时候转换为对应的子类类型
        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代码中点击实现效果
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代码中点击实现效果
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布局使用

 

2.Button背景选择器实现

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



    
    
    
    
    
    

你可能感兴趣的:(【Android程序开发】Button使用详解)