本身并没有这样的方法。selector作为根标签只能在animator和drawable资源文件夹下使用。
step1:既然能在animator下创建,那么就用属性动画把字体大小从一个值变到另一个值,不也能达到想要的效果。
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <set> <objectAnimator android:duration="200" android:propertyName="textSize" android:valueFrom="4dp" android:valueTo="4.8dp" android:valueType="floatType"/> </set> </item> <item android:state_selected="false"> <set> <objectAnimator android:duration="200" android:propertyName="textSize" android:valueFrom="4.8dp" android:valueTo="4dp" android:valueType="floatType"/> </set> </item> </selector>
PS:这里不知为啥4dp的实际效果类似与12dp。
step2:在style中使用该selector。
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="text_style"> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">@drawable/selector_text_color</item> <item name="android:stateListAnimator">@animator/selector_text_size</item> </style> </resources>但是android:stateListAnimator属性只能在values-v21及以上中使用,21以下版本可以另外指定textSize一个固定值。
<style name="text_style"><item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:textColor">@drawable/selector_text_color</item><item name="android:textSize">12dp</item> </style> step3:在textView或者其他控件中引用该style。