我只想将高程/阴影设置为自定义复选框按钮,而不是其文本。 这是我目前正在做的
<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>
但是阴影仍然在整个复选框上。我只需要复选框按钮上有阴影