web-dev-qa-db-ja.com

CardViewをクリックすると標高アニメーションが表示されます

マテリアルスタイルButtonsと同じように、標高アニメーションをAndroid.support.v7.widget.CardViewに追加したいと思います。 StateListAnimatorを設定しようとしました:

Android:stateListAnimator="@anim/selector_raise"

これはres/animのセレクターを指しています:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_enabled="true" Android:state_pressed="true">
        <objectAnimator Android:duration="@Android:integer/config_shortAnimTime"
            Android:propertyName="translationZ" Android:valueTo="@dimen/touch_raise"
            Android:valueType="floatType" />
    </item>
    <item>
        <objectAnimator Android:duration="@Android:integer/config_shortAnimTime"
            Android:propertyName="translationZ" Android:valueTo="0dp"
            Android:valueType="floatType" />
    </item>
</selector>

しかしAndroid Studioは私にエラーを出します:

要素セレクターを宣言する必要があります

それを行う正しい方法は何ですか?

9
manfcas

私はあなたのコードを試しました、多分あなたは単に状態を2番目のセレクター要素に追加しただけです。

したがって、この行を変更します

<item>

これとともに

<item Android:state_enabled="true" Android:state_pressed="false">

完全なコードは次のようになります

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_enabled="true" Android:state_pressed="true">
        <objectAnimator Android:duration="@Android:integer/config_shortAnimTime"
            Android:propertyName="translationZ" Android:valueTo="@dimen/touch_raise"
            Android:valueType="floatType" />
    </item>
    <item Android:state_enabled="true" Android:state_pressed="false">
        <objectAnimator Android:duration="@Android:integer/config_shortAnimTime"
            Android:propertyName="translationZ" Android:valueTo="0dp"
            Android:valueType="floatType" />
    </item>
</selector>
3
Andrea Rosini

この.xmlをres/animフォルダーに作成しようとしました。

存在しない場合は簡単に作成できるので、res/animatorで作成する必要があります。

しかし、あなたが問題を検索するならば、それはすでにあなたに可能な解決策を与えます enter image description here

3
Canato