studio preferencias example editar configuracion archivo activity android android-preferences preferencescreen

preferencias - shared preference android example



Pantalla de preferencias muestra el bloque de texto (4)

Estoy tratando de hacer una pantalla de Preferencias que solo tenga una opción sobre, contacto y legal, todas las cuales al hacer clic solo muestran texto e ícono en una página separada, sin shared preferences ni nada.

Tengo problemas para entender la jerarquía para mostrar el texto. Me gustaría que el flujo fuera: settings -> about -> the about text

Actualmente tengo esto, lo que me da la categoría y la opción, pero no sé qué hacer para mostrar el nuevo texto.

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceCategory android:title="Info"> <Preference android:title="About"/> </PreferenceCategory> ... </PreferenceScreen>

No sé qué opción utilizar para hacer clic en una vista de texto.


La solución de A.Grandt proporciona una imitación realmente agradable del bloque de texto dentro de la Actividad de preferencias, pero agregaría un atributo android:persistent="false" , que evita almacenar innecesariamente esta ''pseudo preferencia'' en el archivo SharedPreferences para la configuración de su aplicación.

Para resumir. La imitación de TextView dentro de la Actividad de Preferencias como A.Grandt sugirió sería:

<Preference android:key="pref_static_field_key" android:selectable="false" android:persistent="false" android:title="you can omit the title" android:summary="Multi line description/ncan go here."/>

Aunque puede usar /n para el /n de línea, no cambiará el tamaño del elemento de preferencias en sí, por lo que existe la posibilidad de que estas líneas múltiples no sean completamente visibles dentro de un elemento de preferencias de una sola línea.


No puede agregar un bloque de texto con formato dentro de una Pantalla de PreferenceScreen , eso no es lo que debe ser. Sin embargo, puede agregar su texto Acerca de dentro de otra actividad (un LinearLayout con algunos LinearLayout con formato puede ser suficiente). Llama a esto pasando una intención dentro de la preferencia:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <Preference android:key="about" android:title="About"> <intent android:action="your.package.path.to.Activity"/> </Preference> </PreferenceScreen>


Quería agregar un bloque de texto, pero establecer el contenido del texto real mediante programación . Mi necesidad específica: mostrar el nombre de la versión de la aplicación en la parte superior de la pantalla de preferencias.

Lo logré siguiendo el enfoque de A.Grandt y Krzysiek , y estableciendo el resumen en código.

dev_preferences.xml :

<Preference android:key="pref_app_version" android:persistent="false" android:selectable="false" android:title="@string/app_name" />

El fragmento de preferencia ( extends PreferenceFragment ):

private static final String KEY_APP_VERSION = "pref_app_version"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.dev_preferences); findPreference(KEY_APP_VERSION).setSummary(BuildConfig.VERSION_NAME); }

También terminé usando un diseño personalizado ( como en esta respuesta ) configurando android:layout="@layout/dev_preferences_header" en la entrada <Preference> . (No es obligatorio, pero de esta manera puede personalizar fácilmente el aspecto del "encabezado" de preferencias).

dev_preferences_header.xml :

<RelativeLayout 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:padding="@dimen/spacing_small"> <TextView android:id="@android:id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@android:id/summary" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@android:id/title" /> </RelativeLayout>


Tuve el mismo problema y necesitaba mostrar un bloque de texto estático. Aunque en mi caso estaba alineado en la página de preferencias.

La etiqueta permite la vinculación aunque eso no resuelve la necesidad de texto estático. Sin embargo, la etiqueta de preferencia sí lo hace. Puede hacer que muestre el texto, la línea de título habitual, así como el resumen del texto debajo, ambos son opcionales, y luego hacer que no se pueda seleccionar. Te dará la ilusión de un texto estático.

<Preference android:key="pref_static_field_key" android:selectable="false" android:title="you can omit the title" android:summary="Multi line description/ncan go here."/>