2011-04-13 4 views
6

No quiero usar las preferencias proporcionadas por el marco, prefiero crear un ListView que se vea similar. En particular, me gustaría usar el mismo tamaño de fuente y estilo para TextViews.Android: cómo hacer un ListView que se parece a las Preferencias?

+0

Eso dependerá totalmente de qué marco está hablando. Cada vendedor tiene ajustes específicos para diferenciarlo de los demás. Siempre puedes tomar la Settings.apk de tu fw, descompilarla con el administrador de apk y sumergirte en los xmls para obtener una idea. – Aleadam

Respuesta

9

No se trata de la propia ListView, sino más bien las vistas secundarias que aparecen dentro de la ListView. Se crean mediante el método getView de su adaptador.

Para crear vistas similares a Android, puede usar el código fuente de Android, específicamente los diseños de archivos XML relevantes. Por ejemplo, preference.xml se ve así:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeight" 
    android:gravity="center_vertical" 
    android:paddingRight="?android:attr/scrollbarSize"> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="15dip" 
     android:layout_marginRight="6dip" 
     android:layout_marginTop="6dip" 
     android:layout_marginBottom="6dip" 
     android:layout_weight="1"> 

     <TextView android:id="@+android:id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="true" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:ellipsize="marquee" 
      android:fadingEdge="horizontal" /> 

     <TextView android:id="@+android:id/summary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@android:id/title" 
      android:layout_alignLeft="@android:id/title" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:maxLines="4" /> 

    </RelativeLayout> 

    <!-- Preference should place its actual preference widget here. --> 
    <LinearLayout android:id="@+android:id/widget_frame" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:gravity="center_vertical" 
     android:orientation="vertical" /> 

</LinearLayout> 

Usted no será capaz de utilizar este contenido directamente, ya que algunas de las constantes utilizadas son privadas a Android, y vas a tener que cavar más abajo a través de otra xml's

De todos modos, debe tener en cuenta que las preferencias de Android se ven diferentes en diferentes versiones de Android y en diferentes temas, así que asegúrese de usar las constantes proporcionadas por Android, y no sus propios valores codificados, para asegurarse sus elementos de vista de lista se asemejan a las preferencias reales proporcionadas por Android.

+0

Gracias, esto es exactamente lo que estaba buscando. – ab11

+0

¿Dónde están ubicados este archivo (preference.xml) y los archivos de diseño de preferencias relacionados en el código fuente de Android? Editar: me respondo, mejor búsqueda en la carpeta SDK: '\ sdk \ platforms \ android-19 \ data \ res \ layout' (archivos que comienzan con" preferencia "). – cprcrack

1

Añadir este atributo a la etiqueta de la actividad en su AndroidManifest.xml

android:theme="@android:style/Preference.PreferenceScreen" 
+1

Esto me da un error: 'El recurso no es público' – Sam

Cuestiones relacionadas