问题:android:background在MaterialComponents中不起作用。

在我的项目中,我正在使用AppCompat

<style name="DayTheme" parent="Theme.AppCompat.Light.NoActionBar">
而且一切正常。
但是,由于我项目中的某些要求,现在,我必须使用MaterialComponents

<style name="DayTheme" parent="Theme.MaterialComponents.Light.NoActionBar">

因此,某些用户界面看起来很糟糕。

问题:在AppComapt中,我使用的android:background="@drawable/bg_circle_btn"正常,但是在MaterialComponents中,这种背景没有效果。

我试图改变颜色,改变形状,但没有效果。

 <Button
                                android:id="@+id/custom_category_image"
                                android:layout_width="match_parent"
                                android:layout_height="25dp"
                                android:layout_alignParentTop="true"
                                android:layout_centerHorizontal="true"
                                android:background="@drawable/bg_circle_btn"
                                android:text="A"
                                android:textColor="@color/colorWhite"
                                android:textSize="12dp"
                                android:visibility="gone"
                                app:srcCompat="@drawable/ic_navigate_next_black_24dp" />


(我使用按钮,是因为我在该按钮中设置了标题的第一个字母,而不是任何固定的图像,并且该按钮实际上位于carview内,因此也将是cirlce。)

bg_circle_btn:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <solid android:color="?attr/toolbarcolor" />

    <size
        android:width="120dp"
        android:height="120dp" />
</shape>


请注意,在整个项目中,我需要使用此背景,因此请不要提供任何其他替代方法。

最佳答案

您可以使用androidx.appcompat.widget.AppCompatButton代替Button。这样可以解决您的问题。

除此之外,您可以使用android:backgroundTint仅更改颜色。

要同时更改com.google.android.material.button.MaterialButton的(形状和颜色),必须从代码中执行以下操作:

setBackgroundResource(R.drawable.bg_circle_btn) setBackgroundTintList(ColorStateList.valueOf(Color.RED))

10-08 15:55