web-dev-qa-db-fra.com

Android arrière-plan dessiné ne fonctionne pas dans le bouton depuis Android Studio 4.1

Je découvre que depuis Android Studio 4.1 Je ne peux pas changer la couleur d'arrière-plan d'un Button en définissant la couleur de son Android:background, juste aucun effet. Et personnalisé Drawable ne fonctionne pas aussi bien.

mon arrière-plan Drawable:

<shape
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="rectangle">

    <stroke
        Android:width="1.5dp"
        Android:color="@Android:color/black" />

    <solid
        Android:color="@Android:color/white" />

    <corners
        Android:radius="8dp" />

</shape>

mon Button:

<Button
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="Add To Cart"
    Android:background="@drawable/background3"/>

Résultat:

enter image description here

8
Sam Chen

OK, puisque MaterialButton est la valeur par défaut Button à partir de Android Studio 4.1, nous pouvons modifier la forme à l'aide de app:shapeAppearanceOverlay attribut.

1. Créez un style personnalisé dans themes.xml:

<style name="leaf">
    <item name="cornerSizeTopLeft">70%</item>           //can specify corner position
    <!--<item name="cornerFamilyTopLeft">cut</item>-->
    <item name="cornerSizeBottomRight">70%</item>
    <!--<item name="cornerFamilyBottomRight">cut</item>-->
</style>

2. Appliquer le style dans Material Button:

<Button
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="16dp"
    Android:text="Show"
    app:shapeAppearanceOverlay="@style/leaf" />        //here

Résultat:

enter image description here

1
Sam Chen