添加可绘制文件后Android按钮边框保持默认

Posted

技术标签:

【中文标题】添加可绘制文件后Android按钮边框保持默认【英文标题】:Android button border stay deafault after adding drawable file 【发布时间】:2021-12-06 23:19:54 【问题描述】:

我正在 android studio 中开发一个项目,我正在尝试将边框更改为我的按钮。 当我将它添加到我的网格时,我的默认按钮如下所示:

在可绘制文件中添加新的 XML 文件(称为 box_solid_border.XML)后,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <stroke
        android:
        android:color="#000000" />

</shape>

结果是它正在创建我可以看到的下一个形状:

这正是我想要添加到按钮的内容。

当我回到主文件中的 XML 并将下一行添加到我的按钮时:

正如您在第 226 行中看到的那样,我正在将刚刚为该按钮创建的背景添加到按钮中。在这条线附近,有我想要的确切边界。 但在应用程序中,该按钮仍与默认按钮相同,没有添加任何边框。 像这样:

有人知道drawable文件不影响按钮的原因吗? 如果我对 textView 或其他东西做同样的事情,它工作得很好,只是按钮看起来不受他的可绘制扩展的影响。

谢谢!

【问题讨论】:

【参考方案1】:

您需要将此属性添加到您的按钮:

app:backgroundTint="@null"

如果它同时具有android:backgroundapp:backgroundTint两个属性(如果你的应用程序使用默认主题,它有一个默认值),app:backgroundTint指定的颜色将覆盖在drawable的形状上。

【讨论】:

【参考方案2】:

按钮的边框尝试编辑可绘制文件夹中的 box_solid_border.xml&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"&gt;&lt;stroke android:color="@color/black"android:width="5dp"/&gt;&lt;corners android:radius="8dp"/&gt;&lt;solid android:color="@color/colorAccent"/&gt;&lt;/shape&gt;

在布局xml文件中&lt;Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="@drawable/box_solid_border"android:text="Button"android:textColor="#fff"android:textSize="30sp" /&gt;

【讨论】:

以上是关于添加可绘制文件后Android按钮边框保持默认的主要内容,如果未能解决你的问题,请参考以下文章

如何为以编程方式存储在变量中的按钮添加 android 可绘制文件的值?

android如何实现imageview默认是灰色,被点击后变成蓝色,(详情请看图片)并保持是蓝色

如何在心形可绘制 xml 中添加边框(描边)线

如何在 Android 的浮动操作按钮 FAB 中保留可绘制的默认颜色

Android TV 按钮不显示焦点可绘制对象

Android布局边框隐藏背景角