使用xml写一个关于textSize的selector

前端之家收集整理的这篇文章主要介绍了使用xml写一个关于textSize的selector前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本身并没有这样的方法。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。

猜你在找的XML相关文章