web-dev-qa-db-ja.com

Theme.MaterialComponents.Light.NoActionBarスタイルを使用する場合、ボタンの背景を設定しない

ChipおよびChipGroupを使用するには、アプリケーションスタイルを「Theme.MaterialComponents.Light.NoActionBar」int manifests.xmlに拡張し、ボタン「Android:background」属性を設定しますが、効果はありません。どうして?そして、私は何ができますか?

これが私のスタイルです:

  <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>

ButtonStyleとmaterialButtonStyleを変更しようとしましたが、効果はありません!

これは私のレイアウト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>

これは結果です:

enter image description here

APPでChipとChipGroupを使用しているため、Material Componentsを拡張するユーザーテーマが必要です!解決方法を知っていますか?教えてください、ありがとう!

このページでは 新しいマテリアルコンポーネントのボタンでAndroid:backgroundを使用することはできません 、作成者はデフォルトのパディングを変更したいのですが、backgroundDrawableを変更したいので、うまくいきません。

13
CnPeng

真のButtonが必要で、フレームワークButtonのように(MaterialButtonの代わりに)変更できる場合は、レイアウトでフレームワークのバージョンを明示的に指定できます。ファイル。これを置き換えます:

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

これとともに:

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

これにより、ブリキに書かれていることがわかります:Android.widget.Buttonは、スタイリングに期待どおりに対応する必要があります。

同様に、<androidx.appcompat.widget.AppCompatButton>素材コンポーネント機能ではなくライブラリ機能をサポートする場合。

24
Ben P.

この特定のケースでは、2番目のLinearLayoutを保持しているButtonの背景色は白いようです。つまり、Buttonに白い背景を明示的に指定する必要はありません。 LinearLayoutの背景が透けて見えるようにすることができます。

これを行うには、 「テキストボタン」スタイル of MaterialButtonを使用します。

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