¿El relleno innecesario en CardView?
He implementado CardView en mi aplicación y todo funciona bien, excepto que hay un poco de relleno alrededor de la imagen si pongo radio a la tarjeta.
Aparece así:
- Barra de herramientas para colapsar como Google Play Store
- Android - Cómo comprobar si textview es nulo o no nulo
- ¿Es imposible agregar varias vistas a un ScrollView?
- Gen ya existe pero no es una carpeta de origen
- ¡Omitió 49 cuadros! La aplicación puede estar haciendo demasiado trabajo en su hilo principal
Pero en los documentos android y en este artículo la imagen toma el cardview entero, así que u puede ayudarme a lograr eso.
Mi archivo de diseño es como:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="200dp" card_view:cardBackgroundColor="@android:color/white" card_view:cardCornerRadius="4dp"> <ImageView android:id="@+id/media_image_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" android:alpha="0.8" android:background="?attr/colorPrimary" android:padding="4dp"> <TextView android:id="@+id/media_download" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:textSize="11sp"/> <TextView android:id="@+id/category_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:textColor="@color/primary_text" android:textSize="12sp"/> </RelativeLayout> </android.support.v7.widget.CardView> </LinearLayout>
NOTA: La captura de pantalla se captura en un dispositivo pre-pirulí.
- ¿Puedo configurar "android: layout_below" en tiempo de ejecución, de forma programática?
- Redimensionamiento suave de un gráfico y una vista de mapa
- Error android.content.res.Resources $ NotFoundException: Archivo de tipo xml recurso de diseño ID # 0x102000a
- Cómo utilizar diseños de múltiples paneles con ViewPager
- Cómo agregar la funcionalidad de deslizar en Android CardView?
- RatingBar - Alternar o deshacer
- Estilo de elemento de menú Arc como en la aplicación tumblr para Android
- Adición dinámica de elementos a la vista de lista mediante el adaptador personalizado para la aplicación de Android
Fui a través de los documentos del desarrollador de nuevo y encontré que:
En la API 20 y antes, CardView no corta los límites de la tarjeta para las esquinas redondeadas. En su lugar, agrega relleno al contenido de modo que no se superponga con las esquinas redondeadas.
Así que para los dispositivos pre-lollipop tengo que llamar a setPreventCornerOverlap (false);
En el cardview.
Actualización: Lo mismo se puede hacer a través del código xml añadiendo la app:cardPreventCornerOverlap="false"
en la vista de la tarjeta.
Establecer la app:cardPreventCornerOverlap="false"
resolverá el problema, pero también eliminará todos los dispositivos de pre-piruletas. Si desea una esquina redonda en todos los dispositivos, agregue manualmente:
Card_view_round_corner_background.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle"> <solid android:color="@color/transparent"/> <stroke android:width="2dp" android:color="@color/Black"/> </shape> </item> <item> <shape android:shape="rectangle"> <solid android:color="@color/transparent"/> <corners android:radius="6dp"/> <stroke android:width="2dp" android:color="@color/Black"/> </shape> </item> </layer-list>
En cardview
<android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="match_parent" android:focusable="true" android:clickable="true" android:foreground="?android:attr/selectableItemBackground"card_view:cardCornerRadius="@dimen/conner_radius" card_view:cardBackgroundColor="@color/Black" card_view:cardElevation="@dimen/z_card"> <!-- Put your card contain here --> <View android:background="@drawable/card_view_round_corner_border" android:layout_width="match_parent" android:layout_height="match_parent" />
Pero esta solución sólo funciona en fondo sólido como negro o blanco.
- Múltiples hiladoras y onItemSelected
- ¿El servicio Android se ejecuta desde un hilo separado en lugar de la interfaz de usuario?