para - manual de programacion android pdf
Crear un diseño personalizado para las preferencias (2)
Estoy tratando de crear un diseño personalizado para administrar las preferencias. Sé que existe el diseño estándar y recomendado proporcionado por PreferenceActivity
, pero si quiero agregar, por ejemplo, un Button
, ¿cómo puedo obtenerlo?
Planeo diseñar la aplicación para que cuando el usuario toque un determinado elemento en la pantalla de actividad principal, vaya a un "submenú" de opciones que el usuario pueda habilitar, que luego aparezca en la pantalla siguiente (tiene que estar en este progresión lineal). El usuario debe configurar estos cada vez que usa la aplicación. Actualmente, estoy considerando usar la actividad de PreferenceActivity
estándar para representar este sub menú de opciones.
Tal vez este no es el enfoque correcto?
Editar: pasé por alto la solución al buscar en Google. Cómo agregar un botón a PreferenceScreen
Planeo diseñar la aplicación para que cuando el usuario toque un determinado elemento en la pantalla de actividad principal, vaya a un "submenú" de opciones que el usuario pueda habilitar, que luego aparezca en la pantalla siguiente (tiene que estar en este progresión lineal).
Esto suena como una PreferenceScreen
anidada.
Siempre puede crear un elemento de diseño de preferencias personalizado y usarlo en PreferenceActivity. Por ejemplo, hice esto:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_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="2" />
<ImageView android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/go"
android:layout_alignParentRight="true" />
</RelativeLayout>
<!-- Preference should place its actual preference widget here. -->
<LinearLayout android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:orientation="vertical" />
</LinearLayout>
Tiene algunos desperdicios, pero básicamente crea 2 líneas (encabezado, subtítulo) con una imagen a la derecha. Podrías reemplazar ImageView con un botón y estarías listo. A continuación, establece el diseño para la preferencia individual en su archivo xml/prefs.xml
la siguiente manera:
<Preference
android:title="@string/label_pref_version"
android:key="@string/pref_version"
android:layout="@layout/pref" />
Después de eso, simplemente findViewById
en tu código de Actividad y adjunta un oyente al botón. Podría tener que trabajar un poco más si tiene varios botones en la Actividad, pero no debería ser irracional.
Puede encontrar el código fuente aquí: https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/preference.xml