Cómo configurar el relleno para el widget CardView en Android L
Estoy usando android:paddingLeft
and android:paddingTop
para establecer el relleno para el nuevo widget CardView
pero no funciona.
Puedo fijar el margen para todos los controles dentro del CardView
como una solución pero ése es un dolor si hay demasiados controles.
- Las esquinas redondeadas cardView no funcionan en RecyclerView - Android?
- setOnClickListener en un TextView dentro de un Cardview
- ¿Se puede usar cardview para el elemento listview y cómo
- CardView dentro de RecyclerView tiene márgenes adicionales
- Importación de CardView y RecyclerView (Android 5.0) en mi proyecto existente (eclipse)
Cómo configurar el relleno para el nuevo widget cardview?
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="200dp" android:paddingLeft="20dp" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="20dp" android:paddingBottom="@dimen/activity_vertical_margin" card_view:cardCornerRadius="2dp"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> </android.support.v7.widget.CardView>
- CardView inserta la línea oscura en la parte inferior
- Programar '? SelectableItemBackground' en la vista de Android
- Reemplazar el fragmento y luego presionar hacia atrás causa rápida UI retraso respuesta, sombras y esquinas efecto son desaparecidos
- "No se pudo encontrar el estilo con id 0x7f070001 en el tema actual" cuando se utiliza CardView android L (api 21)
- CardView tiene margen adicional en cada borde en Pre-Lollipop
- ¿Cómo puedo hacer que WRAP_CONTENT funcione en un RecyclerView
- Hacer el ancho de ajuste ImageView de CardView
- Android RecyclerView LayoutManager Excepción
CardView antes de L-preview utiliza RoundRectDrawableWithShadow
para dibujar su fondo, que reemplaza a Drawable.getPadding()
para agregar relleno de sombra. El fondo de vista se establece mediante el código después de la inflación, que reemplaza cualquier relleno especificado en XML.
Tiene dos opciones:
- Establezca el relleno en tiempo de ejecución mediante
View.setPadding()
y tenga cuidado de ajustar las sombras (pero sólo antes de la vista previa L). - Coloque todo dentro de un diseño que especifique relleno.
Esta última opción es más segura.
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="200dp" card_view:cardCornerRadius="2dp"> <FrameLayout android:paddingLeft="20dp" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="20dp" android:paddingBottom="@dimen/activity_vertical_margin"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> </FrameLayout> </android.support.v7.widget.CardView>
CardView debe manejar esto usando los atributos contentPadding
que viene con :
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="200dp" card_view:cardCornerRadius="2dp" card_view:contentPaddingLeft="20dp" card_view:contentPaddingRight="@dimen/activity_horizontal_margin" card_view:contentPaddingTop="20dp" card_view:contentPaddingBottom="@dimen/activity_vertical_margin"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> </android.support.v7.widget.CardView>
Si desea utilizar el relleno CardView en los dispositivos pre-L, y tener el mismo aspecto en los dispositivos Lollipop +, deberá utilizar setUseCompatPadding(true)
o la variante XML cardUseCompatPadding="true"
.
Esto se debe a que "CardView añade un relleno adicional para dibujar sombras en las plataformas antes de L". [1] Por lo tanto, la implementación predeterminada tiene diferentes versiones de API que parecen diferentes y las vistas pueden no alinearse correctamente. Por lo tanto, la manera más fácil de solucionar ese problema es las formas indicadas anteriormente, o utilizar márgenes en su lugar.
Ejemplo de código
<android.support.v7.widget.CardView 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="wrap_context" card_view:cardUseCompatPadding="true" card_view:contentPadding="8dp" card_view:cardCornerRadius="4dp" > ... </android.support.v7.widget.CardView>
Fuentes
[1] CardView.setUseCompatPadding (booleano)
[2] android.support.v7.cardview: cardUseCompatPadding
Esto es lo que funcionó para mí – poner cada elemento en un diseño de marco
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="-4dp"> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:background="@color/white_three" android:orientation="vertical" card_view:cardCornerRadius="2dp" card_view:cardElevation="@dimen/card_elevation" card_view:cardMaxElevation="0dp" card_view:cardPreventCornerOverlap="false" card_view:cardUseCompatPadding="true" </android.support.v7.widget.CardView>
Compruebe que card_view es " http://schemas.android.com/apk/res-auto " y no las herramientas, y también establece márgenes negativos en la vista de marco para mantener las sombras – funciona bien.
- Compruebe si la tarjeta SD está disponible o no se puede programar
- El tema del diálogo Android hace que el icono sea demasiado claro