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."/>