Как изменить цвет по умолчанию при использовании ?android: attr / selectableItemBackground на CardView?

Вот мой код на CardView:

<android.support.v7.widget.CardView 


android_id="@+id/item_home_device_card_view"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_foreground="?android:attr/selectableItemBackground"
android_clickable="true"
card_view_cardCornerRadius="@dimen/cardview_default_radius"
card_view_cardElevation="@dimen/card_elevation_raised"
card_view_cardUseCompatPadding="true"
card_view_contentPadding="@dimen/padding_card">

...
</android.support.v7.widget.CardView>

Я не имею ни малейшего понятия, чтобы изменить цвет по умолчанию, пожалуйста, помогите мне.
Заранее спасибо.

2 ответа

  1. Вы можете изменить его, определив свой собственный селектор drawable. Ниже приведены содержание selectableItemBackground. Создайте новый файл ресурсов для рисования, поместите в него этот селектор и измените его в соответствии с вашими потребностями.

    <selector 
              android_exitFadeDuration="@android:integer/config_mediumAnimTime">
    
        <item android_state_window_focused="false" android_drawable="@color/transparent" />
    
        <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
        <item android_state_focused="true"  android_state_enabled="false" android_state_pressed="true" android_drawable="@drawable/list_selector_background_disabled" />
        <item android_state_focused="true"  android_state_enabled="false"                              android_drawable="@drawable/list_selector_background_disabled" />
        <item android_state_focused="true"                                android_state_pressed="true" android_drawable="@drawable/list_selector_background_transition" />
        <item android_state_focused="false"                               android_state_pressed="true" android_drawable="@drawable/list_selector_background_transition" />
        <item android_state_focused="true"                                                             android_drawable="@drawable/list_selector_background_focused" />
        <item android_drawable="@color/transparent" />
    
    </selector>
    
  2. В вашем коде,

    android:foreground="?android:attr/selectableItemBackground"
    

    принимает цвет по умолчанию. В случае, если вы хотите изменить свой пользовательский цвет, используйте пользовательский drawable for и включите его в свой cardview, как показано ниже.

    <android.support.v7.widget.CardView 
         
        android_clickable="true" 
        android_foreground="@drawable/custom_bg"/>
    

    и для custom_bg, который вы можете видеть в приведенном выше коде, вы должны определить xml-файл в drawable package. Так что на pre-lollipop устройств вы будете иметь твердый эффект щелчка и на lollipop и выше устройств вы будете иметь эффект пульсации на cardview с пользовательским фоном указано.