it-swarm.com.de

wenn Sie den Stil "Theme.MaterialComponents.Light.NoActionBar" verwenden, setzen Sie den Hintergrund der Schaltfläche nicht auf den Effekt

Um Chip und ChipGroup zu verwenden, habe ich Application Style erweitert "Theme.MaterialComponents.Light.NoActionBar" int manifests.xml, dann setze ich Button "Android: background" attr, aber es ist kein Effekt! Warum? und was kann ich tun ?

das ist mein Stil:

  <style name="AppBaseTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <item name="colorPrimary">@color/primary_material_light</item>
    <item name="colorPrimaryDark">@color/header_color</item>
    <item name="actionBarSize">48dp</item>
    <item name="Android:screenOrientation">portrait</item>
    <!--<item name="buttonStyle">@style/AntButton</item>-->
    <!--<item name="materialButtonStyle">@style/AntButton</item>-->
    <!--<item name="Android:button"></item>-->
    <!--<item name="Android:progressTint">@color/ffc000</item>-->
    <item name="colorAccent">@color/ffc000</item>
</style>


<style name="AntButton" parent="Android:Widget">
    <item name="Android:background">@drawable/abc_btn_default_mtrl_shape</item>
    <item name="Android:textAppearance">?android:attr/textAppearanceButton</item>
    <item name="Android:minHeight">48dip</item>
    <item name="Android:minWidth">88dip</item>
    <item name="Android:focusable">true</item>
    <item name="Android:clickable">true</item>
    <item name="Android:gravity">center_vertical|center_horizontal</item>
    <!--<item name="Android:colorButtonNormal">@color/white</item>-->
</style>

Ich habe versucht buttonStyle und MaterialButtonStyle zu ändern, aber nicht auch den Effekt!

das ist mein Layout-XML:

<LinearLayout
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <LinearLayout
        Android:id="@+id/ll_popup"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_gravity="bottom"
        Android:background="@color/white"
        Android:divider="@drawable/shape_divider_05dp"
        Android:orientation="vertical"
        Android:showDividers="beginning|middle">

        <!--only can use backgroundTint to change background color-->
        <Button
            Android:id="@+id/item_popupwindows_Photo"
            Android:layout_width="match_parent"
            Android:layout_height="55dp"
            Android:backgroundTint="@color/white"
            Android:text="Pictrue"
            Android:textColor="@color/c_666666"
            Android:textSize="16sp" />

        <!--background not effect !!-->
        <Button
            Android:id="@+id/item_popupwindows_cancel"
            Android:layout_width="match_parent"
            Android:layout_height="55dp"
            Android:background="@color/white"
            Android:text="cancel"
            Android:textColor="@color/c_666666"
            Android:textSize="16sp" />
    </LinearLayout>
</LinearLayout>

das ist das Ergebnis:

 enter image description here

Da ich Chip und ChipGroup in APP verwendet habe, muss ich das User Theme MaterialComponents erweitern! Wissen Sie, wie Sie das Problem lösen können? Bitte sagen Sie es mir, danke!

auf dieser Seite Android kann nicht verwendet werden: Hintergrund mit Schaltfläche aus den neuen Materialkomponenten , der Autor möchte die Standardauffüllung ändern, aber ich möchte die Hintergrundzeichnung ändern, also funktioniert es für mich nicht.

5
CnPeng

Wenn Sie eine echte Button wünschen, die jedoch wie das Framework Button (anstelle der MaterialButton) geändert werden kann, können Sie die Frameworkversion explizit in Ihrer Layoutdatei angeben. Ersetzen Sie dies:

<Button
    Android:id="@+id/item_popupwindows_cancel"
    ... />

mit diesem:

<Android.widget.Button
    Android:id="@+id/item_popupwindows_cancel"
    ... />

Dadurch erhalten Sie das, was auf der Dose steht: ein Android.widget.Button, der auf das Styling reagieren sollte, das Sie erwarten.

In ähnlicher Weise können Sie einen <androidx.appcompat.widget.AppCompatButton> verwenden, wenn Sie Unterstützungsbibliotheksfeatures, aber keine Materialkomponentenfeatures verwenden möchten.

4
Ben P.

In diesem Fall scheint die LinearLayout, die Ihre zweite Button hält, eine weiße Hintergrundfarbe zu haben. Das heißt, Sie müssen nicht explizit einen weißen Hintergrund für Ihre Button angeben. Sie können den Hintergrund der LinearLayout einfach durchscheinen lassen.

Dies kann mit dem "Text Button" -Stil von MaterialButton erreicht werden:

style="@style/Widget.MaterialComponents.Button.TextButton"
0
Ben P.