学习内容:设置点击事件的三种方式
学习准备:
一、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,默认使用主题色。因此,在代码中设置的背景颜色可能会被覆盖。
(三)解决方案
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"