仅在选择器Android中将海拔高度设置为自定义复选框按钮

时间:2019-04-01 14:10:03

标签: android checkbox customization selector android-elevation

我只想将高程/阴影设置为自定义复选框按钮,而不是其文本。 这是我目前正在做的

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

但是阴影仍然在整个复选框上。我只需要复选框按钮上有阴影

0 个答案:

没有答案