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

Android button border stay deafault after adding drawable file

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

在看起来像这样的可绘制文件中添加新的 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:width="4dp"
        android:color="#000000" />

</shape>

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

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

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

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

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

谢谢!

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

app:backgroundTint="@null"

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

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

布局中xml文件
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/box_solid_border"
android:text="Button"
android:textColor="#fff"
android:textSize="30sp" />