android编程 按钮,【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布局使用

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Edit"

android:textColor="#ff0000"

android:textSize="25sp"

android:onClick="login"

/>

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布局使用

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代码中点击实现效果

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,类似这样,随着不同的点击,按钮的标题在Done和Edit之间不断的切换)

a868fd94e62c

未命名文件.jpg

第一种方法:

1.xml布局使用

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代码中点击实现效果

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布局使用

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代码中点击实现效果

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,间接被知道

a868fd94e62c

未命名文件(1).jpg

第三种方法:(按钮本身自动获取按钮自己的点击状态,通过添加一个Tag值)

1.xml布局使用

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"

/>

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(一)的基础上,再设置两个按钮,实现点击其中一个按钮,则另一个按钮才有效(才能点击),否则该按钮无效

a868fd94e62c

未命名文件(2).jpg

第一种方法

1.xml布局使用

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"

/>

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"/>

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代码中点击实现效果

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布局使用

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="分享"

android:textColor="@drawable/test_color" />

2.Button背景选择器实现

新建一个配置文件

drawable->new->Drawable resource file

android:state_pressed="true"/>

android:state_enabled="false"/>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值