Sugerencias de diseño de material para listas con avatar, texto e icono

Quiero crear la aplicación Android de Material Designed y trato de seguir todas las sugerencias de Google acerca de hacer diseños agradables especialmente para el nuevo RecylcerView . El RecyclerView tiene avatar ImageView , título y subtítulo TextView y el icono de acción ImageView .

¿Qué valores debo poner en las propiedades de ImageViews para el width y la height por lo que admite diferentes tamaños de pantalla y densidades, y qué tamaño de esas líneas se debe elegir en el paquete de iconos del sistema?

Material-diseño-iconos-1.0.1

Sugerencia para las listas:

Avatar con el texto y el icono

??? En código xml son las cosas desconocidas que no sé qué poner allí:

XML:

 <?xml version="1.0" encoding="utf-8"?> <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:id="@+id/card_view_friend" android:layout_width="wrap_content" android:layout_height="wrap_content" card_view:cardCornerRadius="4dp" card_view:cardUseCompatPadding="true"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content">??? <ImageView android:id="@+id/friend_profile_picture" android:layout_width="40dp"??? android:layout_height="40dp"??? android:layout_alignParentLeft="true" android:layout_margin="16dp" android:layout_centerVertical="true" android:src="@drawable/ic_person_grey600_48dp"/>??? <TextView android:id="@+id/friend_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toLeftOf="@+id/friend_online_imageview" android:layout_toRightOf="@+id/friend_profile_picture" android:paddingTop="20dp" android:text="@string/plain_text_for_preview" android:textSize="16sp"/> <TextView android:id="@+id/friend_state" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/friend_name" android:layout_toLeftOf="@id/friend_online_imageview" android:layout_toRightOf="@+id/friend_profile_picture" android:paddingBottom="20dp" android:text="@string/plain_text_for_preview" android:textSize="14sp"/> <ImageView android:id="@+id/friend_online_imageview" android:layout_width="wrap_content"??? android:layout_height="wrap_content"??? android:layout_alignParentRight="true" android:layout_margin="16dp" android:layout_centerVertical="true" android:src="@drawable/ic_messenger_grey600_18dp"/>??? </RelativeLayout> </android.support.v7.widget.CardView> 

AVANCE:

Vista previa del diseño de XML

# 1 Dos líneas de pedido:

Layout minHeight es 72dp, layout_height es wrap_content . El tamaño del icono es 40dp (generalmente es un mapa de bits de círculo). Icono tiene 16dp margen superior y 16dp margen izquierdo, no otro.

Ambos TextView s están en un LinearLayout orientado verticalmente y centrado verticalmente. Este diseño tiene 16dp margen izquierdo y 16dp margen derecho. Esto le permitirá eliminar la imagen y todavía tiene márgenes laterales intactos. La primera línea tiene típicamente textApperance="@style/TextAppearance.AppCompat.Body2" y la segunda línea tiene Body1 . El diseño del texto tiene 16dp superior y 16dp inferior relleno (tiene que ser relleno aquí porque el margen inferior no se respeta para los niños de RelativeLayout – y es útil otras veces). Ahora usted puede poner varias líneas en el segundo TextView y todo el elemento se ampliará muy bien.

No olvide establecer layout_toRightOf="@+id/icon" y layout_alignWithParentIfMissing="true" en el diseño del texto. Si tiene otro icono (o widget) a la derecha, añada layout_toLeftOf="@+id/right_icon" . Si no se usa layout_alignParentRight="true" . Esto estirará el diseño para ocupar todo el espacio disponible. O puede utilizar LinearLayout .

Coloque esto en una lista en su área de contenido. La lista no tiene que tener ningún relleno en la parte superior o inferior, se verá bien.

# 2 Elementos de línea individuales en el contenido

Igual que el número 1 con las siguientes diferencias: layout_height o layout_height se establece en 56dp. No utilice márgenes verticales o relleno, simplemente centre todo verticalmente. Utilice sólo una línea de texto.

Utilice esto en una lista con 8dp relleno o 48dp cabecera en la parte superior y 8dp relleno en la parte inferior. De lo contrario se verá "cortado".

# 3 Elementos de una sola línea en los menús

Igual que el número 2 con las siguientes diferencias: La altura es 48dp. El icono es 24dp. El icono debe tener los siguientes atributos:

 android:layout_width="40dp" android:layout_height="wrap_content" android:scaleType="fitStart" 

Esto le permitirá poner cualquier icono de 1dp a 40dp sin alterar el equilibrio (usted no tiene que cambiar el espacio entre el icono y el texto, ya que se mantiene 40dp como en los casos anteriores).

Lo uso en un cajón de navegación y menús.

Líneas clave

Editar nota

Las especificaciones dicen que los márgenes izquierdo y derecho del artículo deben ser 24dp en vez de 16dp para las tabletas (sw600dp). Puedes solucionar esto agregando el relleno izquierdo y derecho de la disposición del artículo 8dp en las tabletas (utilice valores dinámicos).

Las especificaciones también dicen que el divisor entre los elementos (si está presente) debe ser parte del elemento. Tienes que definir el "margen de margen total" de 72dp para teléfonos y 80dp para tabletas y usarlo como margen izquierdo para la vista de divisor. El segundo problema es que en las tabletas tiene un relleno derecho de 8dp. Digo esto: Si utiliza ListView , atornille las especificaciones y establecer un divisor personalizado, que se pintará entre los elementos. Si utiliza RecyclerView , escriba un buen ItemDecorator que agregará el divisor sobre el elemento.

EDIT 2

?listPreferredPaddingLeft y ?listPreferredPaddingRight se expandirá a 16dp en teléfonos y 24dp en tabletas (en honor a la configuración de RTL). Puede utilizar estos valores para el relleno izquierdo y derecho en los elementos de la lista. A continuación, 40dp reservado para el icono, 16dp espaciado y, finalmente, el contenido.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.