Preference

Crea pantallas de configuración interactivas sin necesidad de interactuar con el almacenamiento del dispositivo ni de administrar la IU.
Actualización más reciente Versión estable actual Próxima versión potencial Versión Beta Versión Alfa
15 de abril de 2020 1.1.1 - - -

Cómo declarar dependencias

Para agregar una dependencia en Preference, debes agregar el repositorio Maven de Google a tu proyecto. Consulta el repositorio Maven de Google para obtener más información.

Agrega las dependencias de los artefactos que necesites en el archivo build.gradle de tu app o módulo:

    dependencies {
        def preference_version = "1.1.1"

        // Java language implementation
        implementation "androidx.preference:preference:$preference_version"
        // Kotlin
        implementation "androidx.preference:preference-ktx:$preference_version"
    }
    

Para obtener más información sobre las dependencias, consulta Cómo agregar dependencias de compilación.

Comentarios

Tus comentarios ayudan a mejorar Jetpack. Avísanos si descubres nuevos errores o tienes ideas para mejorar esta biblioteca. Consulta los errores existentes en esta biblioteca antes de crear uno nuevo. Para agregar tu voto a un error existente, haz clic en el botón de la estrella.

Cómo crear un error nuevo

Consulta la documentación sobre la Herramienta de seguimiento de errores para obtener más información.

Versión 1.1.1

Versión 1.1.1

15 de abril de 2020

Lanzamiento de androidx.preference:preference:1.1.1 y androidx.preference:preference-ktx:1.1.1. La versión 1.1.1 contiene estas confirmaciones.

Correcciones de errores

  • PreferenceDialogFragmentCompat ya no arrojará una IllegalStateException cuando se aumente un FragmentContainerView de xml. (b/150051716)

Actualizaciones de dependencias

  • La preferencia ahora depende del Fragmento 1.2.4. (aosp/1277317)
  • Ahora, la dependencia preference-ktx depende de androidx.core:core-ktx:1.1.0 y androidx.fragment:fragment-ktx:1.2.4, lo que duplica las dependencias del artefacto preference principal y garantiza que se aplique la actualización de preference-ktx a los artefactos principales y de -ktx de las dependencias transitivas. (aosp/1277319)

Versión 1.1.0

Versión 1.1.0

5 de septiembre de 2019

Lanzamiento de androidx.preference:preference:1.1.0 y androidx.preference:preference-ktx:1.1.0. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Si esta es la primera versión 1.1.* que estás actualizando, a continuación te mostramos una lista concisa de los cambios más importantes en relación con la última versión estable, 1.0.0. También puedes consultar la Guía de configuración, la app de ejemplo y la charla de Android Dev Summit.

Cambios importantes desde 2.0.1

  • PreferenceFragment y otras clases que usan Framework Fragments dejaron de estar disponibles; en su lugar, debes usar PreferenceFragmentCompat y otras clases *compat.
  • Ahora puedes establecer un SummaryProvider en una Preference para configurar dinámicamente su resumen siempre que esta se actualice o sea visible para el usuario. Para obtener más información, consulta la guía.
  • Se agregó la interfaz de EditTextPreference.OnBindEditTextListener, que permite personalizar el EditText que se muestra en el diálogo correspondiente una vez que este se vinculó. Se trata de un reemplazo directo para usar atributos, como android:inputType directamente en EditTextPreference, que no es compatible con la biblioteca de AndroidX. Para obtener más información, consulta la guía.
  • Se agregó Preference.setCopyingEnabled(). Si se activa, cuando mantengas presionada la Preference, se mostrará un menú contextual que permite copiar el resumen de esta.
  • Se actualizó el estilo SeekBarPreference para que coincida con las especificaciones de materiales. Consulta el registro de cambios detallado para conocer los otros cambios realizados en SeekBarPreference.
  • Se implementó una gran cantidad de correcciones de errores, actualizaciones de estilo, correcciones de compatibilidad de nivel de API y mejoras generales de QOL.

Versión 1.1.0-rc01

2 de julio de 2019

Lanzamiento de androidx.preference:preference:1.1.0-rc01 y androidx.preference:preference-ktx:1.1.0-rc01. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Cambios en la API

  • Preference#onInitializeAccessibilityNodeInfo dejó de estar disponible.
  • Este método enviaba mediante proxy información de nodo de accesibilidad a una Preference específica, pero esta es la capa incorrecta para esta personalización. Si deseas ajustar la información de accesibilidad, debes anular onBindViewHolder y agregar directamente información de accesibilidad a la vista.

Versión 1.1.0-beta01

5 de junio de 2019

Lanzamiento de androidx.preference:preference:1.1.0-beta01 y androidx.preference:preference-ktx:1.1.0-beta01. Para conocer las confirmaciones incluidas en esta versión, consulta este vínculo.

Cambios importantes desde 1.1.0

Si esta es la primera versión 1.1.* que estás actualizando, a continuación te mostramos una lista concisa de los cambios más importantes en relación con la última versión estable, 1.1.0. También puedes consultar la Guía de configuración, la app de ejemplo y la charla de Android Dev Summit.

  • PreferenceFragment y otras clases que usan Framework Fragments dejaron de estar disponibles; en su lugar, debes usar PreferenceFragmentCompat y otras clases *compat.
  • Ahora puedes establecer un SummaryProvider en una Preference para configurar dinámicamente su resumen siempre que esta se actualice o sea visible para el usuario. Para obtener más información, consulta la guía.
  • Se agregó la interfaz de EditTextPreference.OnBindEditTextListener, que permite personalizar el EditText que se muestra en el diálogo correspondiente una vez que este se vinculó. Se trata de un reemplazo directo para usar atributos como android:inputType directamente en EditTextPreference, que no es compatible con la biblioteca de AndroidX. Para obtener más información, consulta la guía.
  • Se agregó Preference.setCopyingEnabled(). Si se activa, cuando mantengas presionada la Preference, se mostrará un menú contextual que permite copiar el resumen de esta.
  • Se actualizó el estilo SeekBarPreference para que coincida con las especificaciones de materiales. Consulta el registro de cambios detallado para conocer los otros cambios realizados en SeekBarPreference.
  • Se implementó una gran cantidad de correcciones de errores, actualizaciones de estilo, correcciones de compatibilidad de nivel de API y mejoras generales de QOL.

Cambios en la API desde 1.1.0-alpha05

  • Se quitó getOnBindEditTextListener de la API pública, por lo que solo deberías usar setOnBindEditTextListener cuando interactúas con esta API.

Informa sobre errores aquí si tienes algún problema o si tienes sugerencias para nuevas funciones.

Versión 1.1.0-alpha05

7 de mayo de 2019

Lanzamiento de androidx.preference:preference:1.1.0-alpha05 y androidx.preference:preference-ktx:1.1.0-alpha05. Para conocer las confirmaciones incluidas en esta versión, consulta este artículo.

Nuevas funciones

  • Se actualizó el estilo de las Preferences no seleccionables: el título y el resumen ahora comparten el mismo color para dejar en claro que no es posible interactuar con ellos y solo se usan para mostrar información.
  • Nota: Es posible que pienses en agregar enableCopying="true" a tus Preferences no seleccionables, por lo que puedes mantenerlas presionadas para copiar el resumen.

Correcciones de errores

  • Se corrigió una regresión por la que PreferenceCategory y otras Preferences no seleccionables tenían un efecto en cadena cuando se las seleccionaba.
  • Se solucionó un problema de accesibilidad por el que TalkBack interpretaba que no era posible hacer clic en DropDownPreference.
  • Se corrigieron algunos problemas de diseño de derecha a izquierda (RTL).
  • Se actualizaron algunas anotaciones anulables en PreferenceFragmentCompat para que coincidan con Fragment.

Versión 1.1.0-alpha04

13 de marzo de 2019

Lanzamiento de androidx.preference:preference:1.1.0-alpha04 y androidx.preference:preference-ktx:1.1.0-alpha04. Para obtener una lista completa de las confirmaciones incluidas en esta versión, consulta este vínculo.

Nuevas funciones

Actualización de SeekBarPreference.

  • Se actualizó el diseño para que coincida con las especificaciones de materiales.
    • La etiqueta de valor ahora está oculta de forma predeterminada, aunque todavía se puede mostrar con app:showSeekBarValue="true" o setShowSeekBarValue(true). Esta etiqueta no forma parte de la especificación de materiales, pero entendemos que se utiliza mucho, por lo que seguiremos admitiéndola, aunque no recomendamos usarla.
    • Ahora se actualiza la etiqueta de valor mientras se arrastra la SeekBar, en lugar de cuando se la suelta. Ten en cuenta que esto no significa que el valor se actualiza internamente; consulta a continuación para saber si hay una nueva API que habilite esa funcionalidad.
    • Nota: Aunque es compatible, debe evitar establecer un resumen en una SeekBarPreference, ya que no está previsto y no forma parte de la especificación de materiales.
  • Se agregó compatibilidad con actualizaciones continuas, lo que permite que SeekBar actualice su valor guardado mientras se la arrastra. Se puede habilitar desde XML o mediante programación, con app:updatesContinuously="true" o setUpdatesContinuously(true). Se disparará cada vez que cambies la posición de la SeekBar en la pantalla.

Cambios en la API

  • Se agregaron anotaciones de nulidad de findPreference() que faltaban.

Correcciones de errores

  • Se corrigió un error por el que los objetos de escucha del menú contextual no se quitaban correctamente si la copia no estaba habilitada.

Versión 1.1.0-alpha03

7 de febrero de 2019

androidx.preference:preference 1.1.0-alpha03

Lanzamiento de androidx.preference:preference 1.1.0-alpha03 y androidx.preference:preference-ktx 1.1.0-alpha03 con las siguientes modificaciones.

Correcciones de errores

  • Se solucionó un problema por el que, en ocasiones, la ventana emergente de copiar/pegar no se mostraba en el diálogo EditTextPreference.
  • Se solucionó un problema por el que el adaptador subyacente no se registraba correctamente, lo que provocaba pérdidas de memoria en condiciones específicas (b/121006469).
  • Se corrigieron algunas fallas relacionadas con los diálogos que se producían durante el cambio de configuración (b/122167543).
  • Se corrigió un problema por el que SummaryProvider no funcionaba con MultiSelectListPreference (b/123022772).

Versión 1.1.0-alpha02

17 de diciembre de 2018

Consulta también la Guía de configuración y la app de muestra, que se actualizaron recientemente.

Nuevas funciones

  • Se agregó la interfaz de EditTextPreference.OnBindEditTextListener, que permite personalizar el EditText que se muestra en el diálogo correspondiente, una vez que este se vinculó. Por ejemplo, para establecer un tipo o longitud de entrada personalizados, o agregar un TextWatcher.

  • Se agregó Preference.setCopyingEnabled(). Si se activa, al mantener presionado en Preference, se mostrará un menú contextual que permite copiar el resumen de la preferencia. Se puede usar para permitir la copia de información estática, como ID de usuario específicos o información sobre la versión de la aplicación.

  • Actualmente, preferenceTheme se aplica al tema de la actividad. Esto significa que, cuando se crea una Preference a partir del código, ya no es necesario usar el contexto de PreferenceManager#getContext(); puedes usar solo el contexto de Fragment/Activity.

Cambios en la API

  • Se refactorizó findPreference() para que muestre <T extends Preference>. Esto significa que no es necesario emitir Preferences de manera explícita cuando se utiliza findPreference(). Por ejemplo, EditTextPreference preference = findPreference(“edit_text”) ahora es un código válido.

Versión 1.1.0-alpha01

5 de noviembre de 2018

Nuevas funciones

  • Ahora puedes establecer un SummaryProvider en una Preference para configurar dinámicamente su resumen siempre que esta se actualice o sea visible para el usuario.
  • Se agregaron implementaciones predeterminadas de SummaryProvider para ListPreference y EditTextPreference que, cuando se configuren, actualizarán automáticamente el resumen de la Preference para indicar el valor guardado, o "Not Set", si no se ha guardado ningún valor. Estos se pueden configurar con app:useSimpleSummaryProvider=”true”.
  • Se agregó PreferenceGroup#removePreferenceRecursively, que busca y quita de forma recurrente una Preference del grupo o de un grupo anidado de menor jerarquía.

Cambios en la API

  • PreferenceFragment y otras clases que usan Fragment de framework se dieron de baja; en su lugar, debes usar PreferenceFragmentCompat y otras clases compatibles.

Correcciones de errores

  • Se corrigió un error por el que iconSpaceReserved no funcionaba correctamente con PreferenceCategories.
  • Se corrigió un error por el que PreferenceCategories no usaba colorAccent para el color de su título en niveles de API inferiores a 21.
  • Se corrigieron algunas incoherencias de diseño de SeekBarPreference en niveles de API inferiores a 21.