![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
problema con CardView
Saludos compañeros , estoy utilizando cardview con recyclerview en una de mis app , pero tengo problemas con el clicklistener y aplicarle un selectable a la cardview , el tema es que los elementos hijos de la card quedan en primer plano y tanto el listener como el selectable que le aplico no funcionan porque anida un par de linerlayout, esto no pasa en los listview de siempre.
este es mi xml: Código:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="false" android:orientation="horizontal" android:padding="3dp"> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:background="@drawable/item_selector" android:clickable="true" card_view:cardCornerRadius="4dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:paddingBottom="5dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="5dp" android:focusable="false"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:padding="2dp"> <TextView android:id="@+id/textname" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#040404" android:textStyle="bold" /> <TextView android:id="@+id/textType" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#343434" /> <TextView android:id="@+id/textSize" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#343434" /> </LinearLayout> <ImageButton android:id="@+id/imageInfo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@null" android:clickable="true" android:src="@drawable/ic_action_overflow" /> </LinearLayout> </android.support.v7.widget.CardView> </LinearLayout> Código:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { public TextView txtfile; public TextView txttype; public TextView txtsize; public ImageButton infobtn; public ViewHolder(View v) { super(v); txtfile = (TextView) v.findViewById(R.id.textname); txttype = (TextView) v.findViewById(R.id.textType); txtsize = (TextView) v.findViewById(R.id.textSize); infobtn = (ImageButton) v.findViewById(R.id.imageInfo); v.setOnClickListener(this); } @Override public void onClick(View v) { Toast.makeText(v.getContext(), "OnItemClick :D", Toast.LENGTH_SHORT).show(); } } Un saludo. Última edición por rafaxplayer Día 22/10/14 a las 14:40:35 |
|
#2
|
Bueno en vista del éxito ...XD
he encontrado la solución y la comparto con vosotros , resulta que el cardview este si tiene layout hijos como contenedores entonces no se apaecían los selectores aunque los establezcas como background. al final mi solucion ha sido aplicar el selector tanto a cardview como la layout hijo y establecer carview como clickable , despues en el layouthijo establecer android:duplicateParentState="true" , con esto el selectable funciona para mi , si sabéis alguna forma menos truquera que esta la compartís. mi xml ha quedado asi: Código:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_margin="5dp" card_view:cardCornerRadius="5dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/item_selector" android:id="@+id/card_view" android:clickable="true"> <LinearLayout android:focusable="false" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="horizontal" android:background="@drawable/item_selector" android:paddingBottom="5dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="5dp" android:duplicateParentState="true"> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:orientation="vertical" android:padding="2dp"> <TextView android:id="@+id/textname" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Large Text" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="#040404" android:textStyle="bold" /> <TextView android:id="@+id/textType" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Medium Text" android:textAppearance="?android:attr/textAppearanceMedium" android:textColor="#343434" /> <TextView android:id="@+id/textSize" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Small Text" android:textAppearance="?android:attr/textAppearanceSmall" android:textColor="#343434" /> </LinearLayout> <ImageButton android:background="@null" android:clickable="true" android:id="@+id/imageInfo" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_action_overflow" /> </LinearLayout> </android.support.v7.widget.CardView> |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 10:16:05 (GMT +2)
HTCMania: líderes desde el 2007