при использовании стиля Theme.MaterialComponents.Light.NoActionBar установка фона кнопки не действует - PullRequest
0 голосов
/ 10 октября 2018

Чтобы использовать Chip и ChipGroup, я устанавливаю стиль приложения, расширяющий «Theme.MaterialComponents.Light.NoActionBar» int manifts.xml, затем я устанавливаю кнопку «android: background» 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 в приложении, я должен пользовательтема расширяет материальные компоненты!Знаете ли вы, как решить эту проблему? Скажите, пожалуйста, спасибо!

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

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

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

0 голосов
/ 10 октября 2018

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

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

style="@style/Widget.MaterialComponents.Button.TextButton"
...