CardView couleur de fond des états de non-respect des

En bref:

Comment pouvons-nous définir les états de couleur de CardView de cardBackgroundColor propriété (dans une liste mise en page, dans ce cas)?

(Je suis en utilisant la RC1 de Android L developer preview, sur un téléphone avec 4.4 installé, et "com.android.support:cardview-v7:21.0.0-rc1" dans la construction.gradle)

Plus:

Dans CardView mise en page, nous avons mis le rayon de l'angle et de la couleur de fond de la CardView via cardCornerRadius et cardBackgroundColor.

Cependant, la couleur de fond n'est pas repect certains etats, c'est à dire si l'élément de la liste est pressé, par exemple.

Si, dans le point de vue interne de la CardView, vous pouvez définir une couleur d'arrière-plan, et les états associés, qui sont respectés, cependant, il affiche sur les coins que vous avez défini dans le CardView.

Alors, comment pouvons-nous nous assurer que les etats en CardView de cardBackgroundColor sont-elles respectées?

Voici la couleur utilisée pour la cardBackgroundColor, colour_with_states.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true"  android:state_enabled="false" android:state_pressed="true" android:color="@android:color/holo_green_dark" />
    <item android:state_focused="true"  android:state_enabled="false"                              android:color="@android:color/holo_green_dark" />
    <item android:state_focused="true"                                android:state_pressed="true" android:color="@android:color/holo_green_dark" />
    <item android:state_focused="false"                               android:state_pressed="true" android:color="@android:color/holo_green_dark" />
    <item android:state_focused="true"                                                             android:color="@android:color/holo_green_dark" />
    <!-- Only this below is seen in the cardview dispaly -->
    <item android:color="@android:color/holo_blue_bright" />
</selector>

Et la mise en page qui utilise le CardView:

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:cardview="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    cardview:cardCornerRadius="10dp"
    cardview:cardBackgroundColor="@color/colour_with_states"
    >

<!-- If we set a background color below, it will overwrite our radius defined above -->
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:text="Lorem ipsum"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItem"
    android:background="@null"
    android:gravity="center_vertical"
    android:paddingTop="8dip"
    android:paddingBottom="8dip"
    android:paddingStart="8dip"
    android:paddingEnd="8dip"
    />

</android.support.v7.widget.CardView>
  • Le fait d'utiliser la même couleur de fond dans une FrameLayout égard, les états choisis? Je prends ce que vous appelez setOnClickListener sur votre CardView?
  • Je pense que la réponse est dans votre question: If, in the inner view of the CardView, you set a background colour, and associated states, which are respected, however, it will display over the corners you defined in the CardView. . Le ViewGroup parent (carte) est de routage se concentrer et les événements de la vue enfant. Aussi, ListView a son propre selector pour mettre en évidence les éléments sélectionnés.
  • n'est pas la façon dont il fonctionne. Vous devez tester android:duplicateParentState. Par ce moyen à la fois de la mère ET de tout intéressé les enfants peuvent implicitement répondre avec XML sélecteurs à des événements d'intérêt. CardView sauts de ce modèle, et ne peut pas entendre le parent sélection changement d'état, probablement parce que l'attribut en question est le spécial cardview:cardBackgroundColor, pas le générique android:arrière-plan.
  • Espérons que [ce][1] peut vous aider [1]: stackoverflow.com/questions/24518376/...
InformationsquelleAutor newfivefour | 2014-08-17