【Android】关于Button中设置背景\样式失效的问题及解决办法

        博主最近在学习安卓开发的时候遇到了一个问题,使用Android Studio在为Button设置背景颜色的时候发现设置好后却在运行模拟机上失效了。经过一番查阅资料后才有了正确的解决办法,相信这是很多初学Android开发的朋友都会遇到的一个问题,希望此篇对大家有所帮助。

问题描述:

        使用Android Studio进行安卓开发时Button的背景色一直无法修改,呈现亮紫色(呈现颜色额和主题有关,我的是亮紫色)。

以其中一个Button举例,代码是这样的:

<Button
        android:id="@+id/btn_1"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:text="按钮1"
        android:textSize="20sp"
        android:textColor="#0066FF"
        android:backgroundTint="@null"
        android:background="#FF0000"/>

正常运行的话第一个Button应该是红色的,但是在模拟机上确实这样:

                              

问题原因:

        出现该问题的原因主要是因为使用Android Studio 4.1之后的版本进行开发时,创建的项目默认的主题都是Theme.MaterialComponents.DayNight.DarkActionBar。所有Button都是Material类型的Button,默认使用主题色。

解决方法:

        在左侧project栏中找到app/src/main/res/values/themes.xml

 

将其中的

<style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar">

 修改为:

    <style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">

 或Theme.AppCompat下的任意一种主题:

    <style name="Theme.MyApplication" parent="Theme.AppCompat.Light">

解决后运行结果:

         这时候我们会发现问题已经被完美的解决啦~

-------------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------

        在帖子发出去后经过博主和好友的交流学到了一种更为简单的方法,在使用Button时用android.widget.Button代替Button就可以不用那么麻烦的改设置啦,这无疑是一种更好的方法:

<Button
        android:id="@+id/btn_1"

改为:

<android.widget.Button
        android:id="@+id/btn_1"

即可(QAQ)

  • 51
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
对于Android开发的颜色选择器,可以使用系统提供的ColorPickerDialog类。使用该类,需要在布局文件添加一个Button控件,当用户点击该控件时,弹出一个对话框,显示颜色选择器。下面是一个简单的示例代码: ```java public class MainActivity extends AppCompatActivity { private Button mBtnSelectColor; private int mSelectedColor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mBtnSelectColor = findViewById(R.id.btn_select_color); mBtnSelectColor.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showColorPickerDialog(); } }); } private void showColorPickerDialog() { ColorPickerDialog colorPickerDialog = new ColorPickerDialog(); colorPickerDialog.setOnColorSelectedListener(new ColorPickerDialog.OnColorSelectedListener() { @Override public void onColorSelected(int color) { mSelectedColor = color; mBtnSelectColor.setBackgroundColor(mSelectedColor); } }); colorPickerDialog.show(getSupportFragmentManager(), "colorPicker"); } } ``` 在布局文件,添加一个Button控件: ```xml <Button android:id="@+id/btn_select_color" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Select Color" /> ``` 在showColorPickerDialog方法,创建一个ColorPickerDialog实例,并设置颜色选择监听器。当用户选择一个颜色时,调用监听器的onColorSelected方法,更新Button控件的背景色。ColorPickerDialog类的使用需要引入一个第三方库,可以在build.gradle文件添加以下依赖: ```groovy dependencies { implementation 'com.github.QuadFlask:colorpicker:0.0.13' } ``` 这样就可以使用ColorPickerDialog类实现颜色选择器了。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值