Android 为什么按钮文本不显示在MaterialComponents的默认中心?

Android 为什么按钮文本不显示在MaterialComponents的默认中心?,android,android-button,material-components-android,material-components,Android,Android Button,Material Components Android,Material Components,当我使用AppCompat时,这个东西工作得很好,但当我改为MaterialComponents时,它看起来很糟糕 请参见当前图像: 请参阅“W”,它未正确显示。对于“H”也存在同样的问题 注意:我试过使用按钮、AndroidXbutton和MaterialButton,MaterialComponents案例中没有任何功能 代码: bg\u circle\u btn.xml: <shape xmlns:android="http://schemas.android.com/apk/re

当我使用AppCompat时,这个东西工作得很好,但当我改为MaterialComponents时,它看起来很糟糕

请参见当前图像:

请参阅“W”,它未正确显示。对于“H”也存在同样的问题

注意:我试过使用按钮、AndroidXbutton和MaterialButton,MaterialComponents案例中没有任何功能

代码:

bg\u circle\u btn.xml:

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

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

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

请注意,如果我将cardview的大小从40dp改为50dp,这个问题将得到解决,但大小会更大,这看起来很糟糕

完整的XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/cardbackgroundColor"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp">


        <androidx.cardview.widget.CardView
            android:id="@+id/circle_card_payment"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:elevation="12dp"
            android:innerRadius="0dp"
            android:shape="ring"
            android:thicknessRatio="1.9"
            app:cardCornerRadius="20dp">

            <ImageView
                android:id="@+id/icon"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:visibility="gone"></ImageView>

            <com.google.android.material.button.MaterialButton
                android:id="@+id/logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:text="A"
                android:textColor="@color/colorWhite"
                android:textSize="16sp"
                android:visibility="gone"></com.google.android.material.button.MaterialButton>


        </androidx.cardview.widget.CardView>

        <TextView
            android:id="@+id/tv_category_item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="12dp"
            android:layout_toLeftOf="@+id/next"
            android:layout_toRightOf="@+id/circle_card_payment"
            android:text="Category"
            android:textColor="?attr/day_colorDarkGray_night_colorWhite"
            android:textSize="16sp" />


        <ImageView
            android:id="@+id/next"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:padding="6dp"
            android:tint="@color/colorVeryLightGray"
            android:visibility="visible"
            app:srcCompat="@drawable/ic_navigate_next_black_24dp" />


        <ImageView
            android:id="@+id/hamburger_menu"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/next"
            android:padding="6dp"
            android:tint="?attr/day_colorBlack_night_colorWhite"
            android:visibility="gone"
            app:srcCompat="@drawable/ic_more_vert_black_24dp" />
    </RelativeLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginLeft="70dp"
        android:background="@color/colorVeryLightGray" />


</LinearLayout>

material按钮中
您不应该使用
setBackground*
方法。
您可以查看logcat,您应该可以找到如下内容:

W/MaterialButton: Do not set the background; MaterialButton manages its own background drawable
相反,在
MaterialButton
中,您可以用不同的方式定义。例如,您可以执行以下操作:

<com.google.android.material.button.MaterialButton
            android:id="@+id/logo"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:text="W"
            android:padding="0dp"
            app:strokeWidth="0dp"
            android:insetLeft="0dp"
            android:insetTop="0dp"
            android:insetRight="0dp"
            android:insetBottom="0dp"
            android:textColor="#FFFFFF"
            android:textSize="16sp"
            app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay_ButtonCircle50"
            />

检查您的日志。您应该发现:
W/MaterialButton:不设置背景;MaterialButton管理自己的背景绘图。
@Prianka,您应该将答案标记为已接受@但我想用我自己的可绘制背景。我该怎么办?@Md.Asaduzzaman我的解决方案呢?亲爱的,我还在努力。我知道,但检查一下你的问题,两个问题是不同的,解决方案也应该不同。接受一个,然后问另一个。它会激励他人帮助你。谢谢你最后的请求。你能和我一起在cardview内调整吗?因为我正在将文本android:layout_toRightOf=“@+id/circle_card_payment”设置到cardview的右侧。在cardview中,我看到了图像和这个材质按钮。它有什么问题?当我在相对布局中使用这个按钮时,它也会出现同样的问题。如果您仔细观察屏幕截图并完成XML,我会将类别名称设置到该cardview的右侧。现在假设我删除了CaldVIEW,那么我必须做任何其他布局,比如相对布局,这样我就可以做Android:LayOutTyTrOUT= =“@ + ID/CalCurrCaldPayPayes”,但是因为相对的布局宽度应该是40,所以它也给出了同样的问题。我认为这是一个单独的问题。你可能想考虑一个单独的问题。
W/MaterialButton: Do not set the background; MaterialButton manages its own background drawable
<com.google.android.material.button.MaterialButton
            android:id="@+id/logo"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:text="W"
            android:padding="0dp"
            app:strokeWidth="0dp"
            android:insetLeft="0dp"
            android:insetTop="0dp"
            android:insetRight="0dp"
            android:insetBottom="0dp"
            android:textColor="#FFFFFF"
            android:textSize="16sp"
            app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay_ButtonCircle50"
            />
  <style name="ShapeAppearanceOverlay_ButtonCircle50">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
  </style>