установить высоту на кнопку пользовательский флажок только в селекторе Android - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу установить высоту / тень только для пользовательской кнопки-флажка, а не для ее текста.Это то, что я сейчас делаю

  <CheckBox
        android:id="@+id/custom_checkbox"
        style="@style/CustomCheckBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/standard_page_margin"
        android:elevation="20dp"
        android:outlineProvider="bounds"
        android:text="This is an example." />

, а стиль -

<style name="CustomCheckBox" parent="Base.Widget.AppCompat.CompoundButton.CheckBox">
    <item name="android:button"> @drawable/custom_selector_check_box_button</item>
    <item name="android:textAppearance">@style/CustomTextStyleBody</item>
    <item name="android:textColorLink">@color/custom_bright_sky_blue</item>
    <item name="android:textColorHighlight">@android:color/transparent</item>
    <item name="android:paddingStart">16dp</item>
</style>

, где селектор -

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
    <layer-list>
        <item>
            <shape android:shape="rectangle">
                <size android:width="40dp" android:height="40dp" />
                <solid android:color="@color/slate_gray" />
            </shape>
        </item>
        <item android:gravity="center" android:drawable="@drawable/custom_tick" />
    </layer-list>
</item>
<item android:state_checked="false">
    <shape android:shape="rectangle">
        <size android:width="40dp" android:height="40dp" />
        <solid android:color="@color/slate_gray" />
    </shape>
</item>
</selector>

Но это ставит тень на весь флажоквместе с текстом.Кроме того, я не могу изменить значение высоты в селекторе

РЕДАКТИРОВАТЬ:

Мне удалось добавить отметку с помощью stateListAnimator на флажок, где stateListAnimatorследующим образом

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
    <set>
        <objectAnimator
            android:propertyName="elevation"
            android:valueTo="10dp"
            android:valueType="floatType"/>
    </set>
</item>
<item android:state_checked="false">
    <set>
        <objectAnimator
            android:propertyName="elevation"
            android:valueTo="20dp"
            android:valueType="floatType"/>
    </set>
</item>
</selector>

Но тень по-прежнему на весь флажок.Мне нужна тень только на кнопке флажка

...