Android-L CardView Визуальная Сенсорная Обратная Связь



может ли кто-нибудь объяснить мне, как реализовать некоторые из визуальных сенсорных отзывов, которые были продемонстрированы на Google I/O 2014 в CardView.



вот как я использую CardView в XML, вероятно, есть что-то маленькое, что мне не хватает, поэтому я просто подумал, Может ли кто-нибудь мне помочь?.



<!-- A CardView -->
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/CardView_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
card_view:cardCornerRadius="4dp"
android:elevation="2dp">

<LinearLayout
android:id="@+id/LinearLayout_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:onClick="RunSomeMethod"">

<!-- Main CardView Content In Here-->

</LinearLayout> </android.support.v7.widget.CardView>
682   4  

4 ответов:

API 11+:

добавить android:foreground="?android:attr/selectableItemBackground" на CardView элемент.

API 9+:

добавить android:foreground="?selectableItemBackground" на CardView элемент.


Edit: пульсация, исходящая из центра, а не из точки касания, является известная ошибка и была исправлена.

чтобы сделать выбор на pre-Lollipop и пост-леденец правильно, вы можете использовать следующий подход (идея заключается в использовании вставка drawable селектора с округлый углы для pre-Lollipop-образец ниже использует пользовательские цвета, вы можете изменить их на по умолчанию):

android:foreground="@drawable/card_foreground"

пост-леденец

drawable-v21 / card_foreground.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#20000000"
        android:drawable="@drawable/card_foreground_selector" />

drawable-v21 / card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#18000000"/>
        </shape>
    </item>
    <item android:state_focused="true" android:state_enabled="true">
        <shape android:shape="rectangle">
            <solid android:color="#0f000000"/>
        </shape>
    </item>
</selector>

pre-Lollipop

drawable / card_foreground.xml (вам нужно будет настроить значения вставки в соответствии с высотой вашей карты)

<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/card_foreground_selector"
    android:insetLeft="2dp"
    android:insetRight="2dp"
    android:insetTop="4dp"
    android:insetBottom="4dp"/>

drawable / card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#18000000"/>
            <corners android:radius="@dimen/card_radius" />
        </shape>
    </item>
    <item android:state_focused="true" android:state_enabled="true">
        <shape android:shape="rectangle">
            <solid android:color="#0f000000"/>
            <corners android:radius="@dimen/card_radius" />
        </shape>
    </item>
</selector>

это помогло в моем случае

Справочная информация:

The CardView игнорировать android:background в пользу app:cardBackground который может быть только цвет. Граница и тень на самом деле являются частью фона, поэтому вы не можете установить свой собственный.

устранение:

сделать макет внутри CardView кликабельный вместо самой карты. Вы уже написали оба атрибута, необходимые для этого макет:

android:clickable="true"
android:background="?android:selectableItemBackground"

вот мое решение. Он использует пульсацию для lollipop+ и статический передний план для устройств pre-lollipop.

<android.support.v7.widget.CardView
    ...
    android:foreground="?android:attr/selectableItemBackground">

Comments

    Ничего не найдено.