¿Hay alguna forma de agregar un botón en la parte inferior de la pantalla de preferencias y hacer que funcionen correctamente al desplazarse?
android
android-preferences
vlaku
fuente
fuente
Respuestas:
Existe otra solución para personalizar la apariencia de las preferencias.
Diseñe un diseño XML normal con botones o lo que desee agregar a las preferencias estándar. Incluya un
ListView
en su diseño y asígnele la identificación@android:id/list
.Digamos que llamamos al archivo de diseño
res/layout/main.xml
. Podría verse algo como esto:En su
PreferenceActivity
, agregue estas dos líneas a suonCreate
:El
ListView
en su diseño será reemplazado por las preferencias definidas de la forma habitual enres/xml/preferences.xml
.fuente
Sé que esto es un poco tarde, pero acabo de encontrar una solución que me gusta más que la elogiada solución de Max.
Simplemente puede agregar un pie de página (o si desea que el botón esté en la parte superior, un encabezado) al ListView de PreferenceActivity así:
Espero que esto ayude a alguien.
fuente
ListView
con PreferenceFragment :(PreferenceFragment
tiene su propia lista), pero lo resolví simplemente creando unPreference
y estableciendo unIntent
en él. No había necesidad de crear un botón (al menos en mi caso)Este ejemplo a continuación mostrará un botón en la parte inferior de la página (en caso de que alguien todavía esté interesado).
En el caso de LinearLayout, también puede aplicar pesos; esto es necesario porque Listview está configurado en * fill_parent *. Normalmente hago esto agregando * android: layout_weight * 's:
La explicación a continuación no es probablemente del 100%, pero lo ayudará a comprender ...
También se podría decir, porque el botón no tiene peso; el botón se representa a una altura de 0dp.
Ahora, con el layout_weigths agregado, dejará que el botón se renderice en vista
fuente
De hecho, hay una solución. Aquí hay un código, espero que sea útil para cualquiera. Parece que hay 3 opciones y 2 botones en la parte inferior de la pantalla, independientemente de la resolución de la pantalla (se apuntó a 240 como el más bajo)
fuente
Solo necesita usar PreferenceFragment dentro de la Actividad general y agregar el botón en el diseño de la actividad.
SettingActivity.java
ajuste_actividad
fuente
buttonSave
:)Este sería el aspecto del código en la actividad del ejemplo de ronny. Mi intención era poner un menú en la parte inferior de la pantalla.
fuente
Hago referencia a @Ronnie, uso RelativeLayout y establezco una altura para layout_height de listview, y luego configuro el layout_alignParentBottom = "true" del botón. Puede representar un botón en la parte inferior de PreferenceScreen; luego usa la forma de @Max. funciona para mis necesidades.
fuente
También es posible agregar botones de acción a la barra de acciones para un enfoque estándar de Android.
fuente
Vista personalizada en Preference Activity esto ayudará a agregar una vista personalizada en PreferenceActivity en Android.
Crear main.xml, la vista sólo es necesario es un ListView, con id:
android:id="@android:id/list"
.Crear CustomPreferenceActivity.java
fuente
La siguiente es una solución simple para agregar un botón en el que se puede hacer clic a su pantalla de preferencias. Esto se hace fácil porque las preferencias ya reservan el espacio en el android: widgetLayout y el botón puede pasar clics con android: onClick.
Primero crea un button.xml con el contenido
Ahora en suferences.xml, agregue la preferencia
Su PreferenceActivity ahora solo tiene que contener un miembro onButtonClick
fuente
preferencias.xml:
SettingsFragment.java:
fuente
Encontré que todas las respuestas anteriores no se pueden usar ya que los diseños que creé para 'envolver' el
PreferenceScreen
contenedor dentro de diseños personalizados (luego agregar un botón debajo delListView
) en realidad no funcionó.Solo superpusieron el diseño personalizado en la parte superior de la lista de preferencias (flotante), y al hacer clic (por ejemplo) en un nuevo botón personalizado solo se invocaría la preferencia debajo del botón.
Sin embargo, encontré esta solución que funciona muy bien para agregar un botón debajo del contenedor de la lista de preferencias, cuando se usa
PreferenceFragment
.fuente