【Android】View之Button总结


一、基础属性

属性作用
android:id="@+id/button2"id
android:layout_width=“match_parent”宽度
android:layout_height=“wrap_content”高度
android:text=“文本”文本(强制转化成大写)
android:textAllCaps=“false”文本不强制转化成大写
android:textColor="@android:color/white"文字颜色
android:textSize=“25sp”文字大小
android:background="@drawable/button"背景图片

二、点击事件

1.指定Button的onClick属性方式

(1)首先在layout文件中指定onClick属性

android:onClick="click"
<!--click是你的函数名-->

【layout文件】

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    >

    <Button
        android:id="@+id/btn1"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="Button"
        android:onClick="click"/>

</RelativeLayout>

(2)然后在Activity中实现这个click方法

//注意参数必须是View v
//必须是public
//返回值必须是void
public void click(View v)
{
	...
}

【Activity文件】

public class MainActivity extends AppCompatActivity {

    private TextView tv_show;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        tv_show= this.<TextView>findViewById(R.id.textView);
        //在onCreate方法中给tv_show变量赋值
        //this.<TextView>是强制类型转换,这是快捷键打出来的样子,alt+enter
    }
    
    //注意这是click,你自己的方法名
    public void click(View v)
    {
        tv_show.setText("按钮被点击了");
    }
}

2.点击事件“匿名内部类方式”

在Activity中添加匿名内部类

btn1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        
    }
});

【Activity文件】

public class MainActivity extends AppCompatActivity {

    private TextView tv_show;
    private Button btn1;

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

        tv_show= this.<TextView>findViewById(R.id.textView);
        btn1=this.<Button>findViewById(R.id.btn1);

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                tv_show.setText("按钮被点击了");
                Toast.makeText(MainActivity.this, "failure", Toast.LENGTH_LONG).show();
			   //参数是this,还是.class的问题
			   //如果这是指定Button的onClick属性方式的方法,所以直接写this就行
			   //要是匿名内部类的话,就得写成MainActivity.this的形式,因为this不是指MainActivity.this,而是指这个匿名内部类 
			   //MainActivity.this的形式对这两个都通用
            }
        });
    }
}

3.点击事件“接口方式”

(1)首先当前Activity实现OnClickListener接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener

(2)然后实现接口方法

@Override
public void onClick(View v) {
	tv_show.setText("按钮被点击了");
}

(3)最后绑定到button上

btn1.setOnClickListener(this);

【Activity文件】

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
//在打出View.OnClickListener后按alt+enter,补全onClick方法
    private TextView tv_show;
    private Button btn1;

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

        tv_show= this.<TextView>findViewById(R.id.textView);
        btn1= this.<Button>findViewById(R.id.btn1);

        btn1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        tv_show.setText("按钮被点击了");
    }

    /*多按钮点击写法
    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
            case R.id.button1:
            {
                break;
            }
            case R.id.button2:
            {
                break;
            }
    }
    */
}

三、事件触发背景

1.效果

用于不同按钮状态的不同图像或颜色
在这里插入图片描述

2.实现

(1)创建一个XML文件

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/button_pressed"
          android:state_pressed="true" />
    <item android:drawable="@drawable/button_default" />
</selector>

这定义了一个可绘制资源,它将根据按钮的当前状态更改其图像。

  • 第一个定义按下按钮(激活)时使用的位图。
  • 第二个定义了当按钮处于默认状态时使用的位图(即不按)。

注意:元素的顺序很重要。当引用此drawable时,将按 顺序遍历元素以确定哪个元素适合当前按钮状态。因为默认位图是最后一个,android:state_pressed被评估为false。

PS:一个好像失效的按钮状态

<item android:drawable="@drawable/button_focused"
          android:state_focused="true" />

第二个定义按钮聚焦时使用的位图(当使用轨迹球或方向键突出显示按钮时)。

(2)只需将XML文件应用为按钮背景

android:background="@drawable/btn_background"

XML文件名为btn_background.xml,在drawable文件夹下(随便放,只要引用对就ok)

四、设计效果

https://blog.csdn.net/tyzlmjj/article/details/50096777


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值