无法将形状应用于按钮。

4
我有一个奇怪的问题。我创建了一个简单的按钮,长这样:Button
<com.google.android.material.button.MaterialButton
android:id="@+id/continue_button"
android:background="@drawable/green_button_selector"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/landing_margin"
android:layout_marginEnd="@dimen/landing_margin"
android:layout_marginBottom="@dimen/landing_margin"
android:text="@string/login_button_text"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

我想让按钮变成绿色圆角,所以我创建了一个名为 green_button_selector 的 XML 文件,并将其设置为按钮的背景。下面是该文件的代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="10dp"
    android:shape="rectangle">
    <solid android:color="@color/colorGreenButton" />
    <corners android:radius="10dp" />
</shape>

但是,我的按钮并没有变成绿色,而是使用了应用程序中的colorAccent颜色,您有什么想法我做错了什么吗?

有时候当你创建新的可绘制对象时,重建项目后它不会立即添加。 - Farhana Naaz Ansari
我尝试了,但不幸的是它没有任何效果。 - Szuler
你的drawable可用,我认为你的约束布局可能有问题。尝试设置宽度并检查。 - Farhana Naaz Ansari
我认为边距和宽度正在造成问题。 - Farhana Naaz Ansari
你解决了这个问题吗? - Rooh Al-mahaba
@RoohAl-mahaba 是的,我做到了。我创建了一个扩展 Widget.MaterialComponents.Button 的新样式并将其应用于我的按钮,而不是使用自定义可绘制对象。我使用 <item name="cornerRadius">@dimen/button_radius</item> 使按钮的角变圆,并使用 <item name="backgroundTint">@drawable/green_button_selector</item> 使其变成绿色。 - Szuler
2个回答

0

如果您正在使用材料按钮,则无需创建自定义可绘制对象。

<com.google.android.material.button.MaterialButton
    style="@style/Widget.MaterialComponents.Button"
    android:textAppearance="@style/TextAppearance.AppCompat.Small"
    app:backgroundTint="@android:color/holo_green_dark"
    app:cornerRadius="10dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="BUTTON" />

enter image description here

更多信息:https://material.io/develop/android/components/material-button/


0
<com.google.android.material.button.MaterialButton
android:id="@+id/material_text_button"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/outlined_button_label_enabled"/>

您可以使用以下属性: app:cornerRadius app:backgroundTint 请参阅Material Button官方文档以获取更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接