Android | (六)基础控件4 Button按钮

学习内容:设置点击事件的三种方式

学习准备:

一、onClick属性

1.添加onClick属性,alt+enter,在Activity中创建方法

2.使用Toast,运行并点击Button1 

补充:Toast提示,一种常见的用户界面元素,通常以弹出窗口或气泡形式出现在屏幕上方或下方,提供一种非侵入式的方式来向用户显示短暂的消息或提醒,而不会中断用户的操作。 

二、setOnClickListener+匿名内部类

补充:
        匿名内部类
(Anonymous Inner Class)是一种在声明和创建对象的同时定义类的方式,它没有显式的类名。

 

//findViewById,设置点击事件,new匿名内部类,给Toast
findViewById(R.id.Btn2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText
                (ButtonActivity.this, "Click2", Toast.LENGTH_SHORT).show();
            }
        });

三、综合:Activity实现OnClickListener接口

适合界面中有多个按钮需要点击

 运行,2个按钮都可以正常点击,并弹出各自结果

 findViewById(R.id.Btn2).setOnClickListener(this);
        findViewById(R.id.Btn3).setOnClickListener(this);
    }
    
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.Btn2:
                Toast.makeText(this, "Click2", Toast.LENGTH_SHORT).show();
            case R.id.Btn3:
                Toast.makeText(this, "Click3", Toast.LENGTH_SHORT).show();
        }
    }

这里如果:switch语句报错Constant expression required,请参考这篇文章,解释的很详细  【已解决】switch语句报错Constant expression required-CSDN博客

四、Button背景颜色(background)设置无效? 

(一)遇到问题

        使用Android Studio进行安卓开发时Button的背景色一直无法修改,呈紫色(和主题有保持一致)

(二)分析原因

        Android Studio 4.1之后的版本进行开发时,创建的项目默认的主题都是Theme.MaterialComponents.DayNight.Dark/NoActionBar

        所有Button都是Material类型的Button,默认使用主题色。因此,在代码中设置的背景颜色可能会被覆盖。

(三)解决方案

参考:Android关于Button背景或样式失效问题解决方法_Android_脚本之家

1.方案一

之后再使用按钮,用android.widget.Button 代替 Button

<android.widget.Button 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

2.方案二

把themes里面的这句代码修改成下面这样

<style name="Base.Theme.DataStorageDemo" parent="Theme.MaterialComponents.DayNight.NoActionBar"

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值