it-swarm.com.ru

при использовании стиля Theme.MaterialComponents.Light.NoActionBar установка фона кнопки не действует

Чтобы использовать Chip и ChipGroup, я устанавливаю стиль приложения, расширяющий «Theme.MaterialComponents.Light.NoActionBar» int manifts.xml, затем я устанавливаю кнопку «Android: фон» attr, но это не влияет! Зачем? и что я могу сделать?

это мой стиль:

  <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

Поскольку я использовал Chip и ChipGroup в приложении, мне нужно, чтобы пользовательская тема расширяет MaterialComponents! Вы знаете, как решить эту проблему? Скажите, пожалуйста, спасибо!

на этой странице Невозможно использовать Android: фон с кнопкой из новых компонентов материала , автор хочет изменить отступы по умолчанию, но я хочу изменить backgroundDrawable, так что это не работает для меня.

5
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>, если вы хотите поддерживать функции библиотеки, но не компоненты компонентов материала.

4
Ben P.

В этом конкретном случае LinearLayout, содержащий вашу вторую Button, кажется, имеет белый цвет фона. Это означает, что вам не нужно явно указывать белый фон для вашей Button; Вы можете просто пропустить фон LinearLayout.

Это можно сделать с помощью стиля «Текстовая кнопка» of MaterialButton:

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