Preferenza

Crea schermate di impostazioni interattive senza dover interagire con lo spazio sul dispositivo o gestire la UI.
Ultimo aggiornamento Release stabile Candidato per la release Release beta Release alpha
26 luglio 2023 1.2.1 - - -

Dichiara le dipendenze

Per aggiungere una dipendenza da Preference, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per la tua app o il tuo modulo:

Alla moda

dependencies {
    def preference_version = "1.2.1"

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

Kotlin

dependencies {
    val preference_version = "1.2.1"

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

Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per saperne di più, consulta la documentazione di Issue Tracker.

Versione 1.2

Versione 1.2.1

26 luglio 2023

androidx.preference:preference:1.2.1 è stato rilasciato. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • PreferenceHeaderFragmentCompat ora gestisce correttamente il pulsante Indietro del sistema quando viene utilizzato all'interno di un ComponentDialog o quando si utilizzano librerie come @AndroidEntryPoint di Hilt che racchiudono il Context del Fragment.
  • Preference ora dipende da Activity 1.5.1. (Ie5d22)
  • PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment ora propaga header.extras come argomenti Fragment.

Versione 1.2.0

26 gennaio 2022

androidx.preference:preference:1.2.0 e androidx.preference:preference-ktx:1.2.0 sono stati rilasciati. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • È stato aggiunto PreferenceHeaderFragmentCompat per la preferenza a due riquadri che si adatta automaticamente in base alle dimensioni del dispositivo utilizzato, rendendolo adatto all'uso su smartphone, pieghevoli e tablet. Il riquadro dell'intestazione viene fornito eseguendo l'override del metodo onCreatePreferenceHeader() su PreferenceHeaderFragmentCompat. Qualsiasi <Preference> nell'intestazione PreferenceFragmentCompat che utilizza app:fragment farà in modo che il fragment venga visualizzato nel secondo riquadro dei dettagli. Il fragment dei dettagli iniziale da visualizzare prima che venga selezionata manualmente una preferenza può essere personalizzato eseguendo l'override di onCreateInitialDetailFragment(). L'implementazione predefinita restituisce la prima preferenza con un fragment definito.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • Sono state aggiunte annotazioni di nullabilità a molte delle API che in precedenza non specificavano @NonNull o @Nullable. Questa è una modifica che potrebbe causare un'interruzione del codice sorgente Kotlin se la nullabilità scelta nel codice Kotlin non corrisponde a quella ora definita.

  • PreferenceFragmentCompat ora cerca le implementazioni delle interfacce OnPreferenceStartFragmentCallback, OnNavigateToScreenListener e OnDisplayPreferenceDialogListener nei fragment principali prima di verificare se il contesto o l'attività di hosting implementano queste interfacce.

Versione 1.2.0-rc01

15 dicembre 2021

androidx.preference:preference:1.2.0-rc01 e androidx.preference:preference-ktx:1.2.0-rc01 sono stati rilasciati senza modifiche rispetto a 1.2.0-beta01. La versione 1.2.0-rc01 contiene questi commit.

Versione 1.2.0-beta01

17 novembre 2021

androidx.preference:preference:1.2.0-beta01 e androidx.preference:preference-ktx:1.2.0-beta01 sono stati rilasciati senza modifiche rispetto a Preference 1.2.0-alpha02. La versione 1.2.0-beta01 contiene questi commit.

Versione 1.2.0-alpha02

3 novembre 2021

androidx.preference:preference:1.2.0-alpha02 e androidx.preference:preference-ktx:1.2.0-alpha02 sono stati rilasciati. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche alle API

  • Sono state aggiunte annotazioni di nullabilità a molte delle API che in precedenza non specificavano @NonNull o @Nullable. (I04252, Ie2cc0)
  • È stata rimossa l'API openPreference() da PreferenceHeaderFragmentCompat - questo metodo viene chiamato automaticamente e non deve essere chiamato manualmente. (Ia6989)

Modifiche al comportamento

  • I callback di PreferenceFragmentCompat per OnNavigateToScreenListener e OnDisplayPreferenceDialogListener ora seguono lo stesso pattern di OnPreferenceTreeClickListener e cercano la gerarchia dei fragment principali per i listener validi prima di verificare se il contesto o l'attività di hosting implementano queste interfacce. (I7ae6c)

Versione 1.2.0-alpha01

27 ottobre 2021

androidx.preference:preference:1.2.0-alpha01 e androidx.preference:preference-ktx:1.2.0-alpha01 sono stati rilasciati. La versione 1.2.0-alpha01 contiene questi commit.

Nuove funzionalità

  • È stato aggiunto PreferenceHeaderFragmentCompat per la preferenza a due riquadri (I9a2d8)

Modifiche al comportamento

  • I callback di Preference per OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback e OnPreferenceStartFragmentCallback ora possono essere implementati in un contesto non di attività. Viene controllato se getContext() implementa questi callback prima di controllare getActivity(). Se getContext() restituisce un'attività (il caso comune), non si verifica alcuna modifica del comportamento.

  • La chiamata di PreferenceFragmentCompat a onPreferenceTreeClick ora cerca le implementazioni dell'interfaccia OnPreferenceStartFragmentCallback nei fragment principali prima di considerare l'implementazione dell'attività. (c64eed)

Versione 1.1

Versione 1.1.1

15 aprile 2020

androidx.preference:preference:1.1.1 e androidx.preference:preference-ktx:1.1.1 sono stati rilasciati. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • PreferenceDialogFragmentCompat non genererà più un IllegalStateException durante l'espansione di un FragmentContainerView da XML. (b/150051716)

Aggiornamenti delle dipendenze

  • Preference ora dipende da Fragment 1.2.4. (aosp/1277317)
  • La dipendenza preference-ktx ora dipende da androidx.core:core-ktx:1.1.0 e androidx.fragment:fragment-ktx:1.2.4, rispecchiando le dipendenze dell'artefatto preference principale e garantendo che l'upgrade di preference-ktx aggiorni sia l'artefatto principale sia quello -ktx delle dipendenze transitive. (aosp/1277319)

Versione 1.1.0

5 settembre 2019

androidx.preference:preference:1.1.0 e androidx.preference:preference-ktx:1.1.0 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Se questo è il primo aggiornamento alla release 1.1.*, ecco un elenco conciso delle modifiche più importanti dall'ultima release stabile, 1.0.0. Potresti trovare utili anche la guida Impostazioni, l'app di esempio e il talk dell'Android Dev Summit.

Modifiche importanti dalla versione 1.0.0

  • PreferenceFragment e altre classi che utilizzano i fragment del framework sono state ritirate. Devi utilizzare PreferenceFragmentCompat e altre classi *compat.
  • Ora puoi impostare un SummaryProvider su una preferenza per configurarne dinamicamente il riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente. Per saperne di più, consulta la guida.
  • È stata aggiunta l'interfaccia EditTextPreference.OnBindEditTextListener. Consente di personalizzare EditText visualizzato nella finestra di dialogo corrispondente dopo che la finestra di dialogo è stata associata. Si tratta di una sostituzione diretta dell'utilizzo di attributi come android:inputType direttamente su EditTextPreference, che non è supportato nella libreria AndroidX. Per saperne di più, consulta la guida.
  • È stato aggiunto Preference.setCopyingEnabled(). Se impostato, una pressione prolungata sulla preferenza mostrerà un menu contestuale che consente di copiare il riepilogo della preferenza.
  • Lo stile di SeekBarPreference è stato aggiornato in modo che corrisponda alle specifiche di Material. Per altre modifiche a SeekBarPreference, consulta il log delle modifiche dettagliato changelog.
  • Sono state apportate numerose correzioni di bug, aggiornamenti di stile, correzioni della compatibilità con il livello API e miglioramenti generali della qualità della vita.

Versione 1.1.0-rc01

2 luglio 2019

androidx.preference:preference:1.1.0-rc01 e androidx.preference:preference-ktx:1.1.0-rc01 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche alle API

  • È stato ritirato Preference#onInitializeAccessibilityNodeInfo
  • Questo metodo ha eseguito il proxy delle informazioni sul nodo di accessibilità per una preferenza specifica, ma questo è il livello errato per questa personalizzazione. Se vuoi modificare le informazioni sull'accessibilità, devi eseguire l'override di onBindViewHolder e aggiungere le informazioni sull'accessibilità direttamente alla visualizzazione.

Versione 1.1.0-beta01

5 giugno 2019

androidx.preference:preference:1.1.0-beta01 e androidx.preference:preference-ktx:1.1.0-beta01 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Modifiche importanti dalla versione 1.1.0

Se questo è il primo aggiornamento alla release 1.1.*, ecco un elenco conciso delle modifiche più importanti dall'ultima release stabile, 1.1.0. Potresti trovare utili anche la guida Impostazioni, l'app di esempio e il talk dell'Android Dev Summit.

  • PreferenceFragment e altre classi che utilizzano i fragment del framework sono state ritirate. Devi utilizzare PreferenceFragmentCompat e altre classi *compat.
  • Ora puoi impostare un SummaryProvider su una preferenza per configurarne dinamicamente il riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente. Per saperne di più, consulta la guida.
  • È stata aggiunta l'interfaccia EditTextPreference.OnBindEditTextListener. Consente di personalizzare EditText visualizzato nella finestra di dialogo corrispondente dopo che la finestra di dialogo è stata associata. Si tratta di una sostituzione diretta dell'utilizzo di attributi come android:inputType direttamente su EditTextPreference, che non è supportato nella libreria AndroidX. Per saperne di più, consulta la guida.
  • È stato aggiunto Preference.setCopyingEnabled(). Se impostato, una pressione prolungata sulla preferenza mostrerà un menu contestuale che consente di copiare il riepilogo della preferenza.
  • Lo stile di SeekBarPreference è stato aggiornato in modo che corrisponda alle specifiche di Material. Per altre modifiche a SeekBarPreference, consulta il log delle modifiche dettagliato.
  • Sono state apportate numerose correzioni di bug, aggiornamenti di stile, correzioni della compatibilità con il livello API e miglioramenti generali della qualità della vita.

Modifiche alle API dalla versione 1.1.0-alpha05

  • È stato rimosso getOnBindEditTextListener dall'API pubblica. Quando interagisci con questa API, devi utilizzare solo setOnBindEditTextListener.

Se riscontri problemi o hai suggerimenti per nuove funzionalità, segnala i bug qui.

Versione 1.1.0-alpha05

7 maggio 2019

androidx.preference:preference:1.1.0-alpha05 e androidx.preference:preference-ktx:1.1.0-alpha05 sono stati rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • È stato aggiornato lo stile delle preferenze non selezionabili. Il titolo e il riepilogo ora condividono lo stesso colore per indicare chiaramente che non è possibile interagire con loro e vengono utilizzati solo per visualizzare le informazioni.
  • Nota: potresti prendere in considerazione l'aggiunta di enableCopying="true" alle preferenze non selezionabili, in modo da poter premere a lungo per copiare il riepilogo.

Correzioni di bug

  • È stata corretta una regressione per cui PreferenceCategory e altre preferenze non selezionabili avevano un effetto ripple quando venivano selezionate.
  • È stato corretto un problema di accessibilità per cui TalkBack non vedeva DropDownPreference come selezionabile.
  • Sono stati corretti alcuni problemi di layout RTL.
  • Sono state aggiornate alcune annotazioni di nullabilità in PreferenceFragmentCompat in modo che corrispondano a Fragment.

Versione 1.1.0-alpha04

13 marzo 2019

androidx.preference:preference:1.1.0-alpha04 e androidx.preference:preference-ktx:1.1.0-alpha04 sono stati rilasciati. L'elenco completo dei commit inclusi in questa versione è disponibile qui.

Nuove funzionalità

Aggiornamento di SeekBarPreference!

  • Lo stile è stato aggiornato in modo che corrisponda alle specifiche di Material.
    • L'etichetta del valore ora è nascosta per impostazione predefinita, ma può comunque essere visualizzata con app:showSeekBarValue="true" o setShowSeekBarValue(true). Questa etichetta non fa parte delle specifiche di Material, ma sappiamo che è molto utilizzata, quindi continueremo a supportarla, anche se non ne consigliamo l'utilizzo.
    • L'etichetta del valore ora viene aggiornata mentre la SeekBar viene trascinata, anziché quando viene rilasciata. Tieni presente che questo non significa che il valore venga aggiornato internamente. Vedi di seguito una nuova API che abilita questa funzionalità.
    • Nota: anche se è supportato, ti consigliamo di evitare di impostare un riepilogo su SeekBarPreference, in quanto non è previsto e non fa parte delle specifiche di Material.
  • È stato aggiunto il supporto per gli aggiornamenti continui, che consentono a SeekBar di aggiornare il valore salvato mentre viene trascinata. Questa funzionalità può essere attivata da XML o a livello di programmazione, con app:updatesContinuously="true" o setUpdatesContinuously(true). Viene attivata ogni volta che la posizione di SeekBar sullo schermo cambia.

Modifiche alle API

  • Sono state aggiunte le annotazioni di nullabilità mancanti a findPreference()

Correzioni di bug

  • È stato corretto un bug per cui i listener del menu contestuale non venivano rimossi correttamente se la copia non era abilitata.

Versione 1.1.0-alpha03

7 febbraio 2019

androidx.preference:preference 1.1.0-alpha03

androidx.preference:preference 1.1.0-alpha03 e androidx.preference:preference-ktx 1.1.0-alpha03 sono stati rilasciati con le seguenti modifiche.

Correzioni di bug

  • È stato corretto un problema per cui a volte il popup di copia/incolla non veniva visualizzato nella finestra di dialogo di EditTextPreference.
  • È stato corretto un problema per cui l'adattatore sottostante non veniva annullato correttamente, causando perdite di memoria in condizioni specifiche (b/121006469).
  • Sono stati corretti alcuni arresti anomali relativi alle finestre di dialogo che si verificavano durante la modifica della configurazione (b/122167543).
  • È stato corretto il problema per cui SummaryProvider non funzionava per MultiSelectListPreference (b/123022772).

Versione 1.1.0-alpha02

17 dicembre 2018

Dai un'occhiata anche alla guida Impostazioni e all'app di esempio aggiornate di recente.

Nuove funzionalità

  • È stata aggiunta l'interfaccia EditTextPreference.OnBindEditTextListener. Consente di personalizzare EditText visualizzato nella finestra di dialogo corrispondente dopo che la finestra di dialogo è stata associata. Ad esempio, impostando un tipo / lunghezza di input personalizzato o aggiungendo un TextWatcher.

  • È stato aggiunto Preference.setCopyingEnabled(). Se impostato, una pressione prolungata sulla preferenza mostrerà un menu contestuale che consente di copiare il riepilogo della preferenza. Può essere utilizzato per consentire la copia di informazioni statiche come ID specifici dell'utente / informazioni sulla versione dell'applicazione.

  • preferenceTheme ora viene applicato al tema dell'attività. Ciò significa che quando crei una preferenza dal codice, non devi più utilizzare il contesto di PreferenceManager#getContext() ma puoi utilizzare il contesto di Fragment/Activity.

Modifiche alle API

  • findPreference() è stato sottoposto a refactoring per restituire <T extends Preference> Ciò significa che non devi eseguire il cast esplicito delle preferenze quando utilizzi findPreference(). Ad esempio, EditTextPreference preference = findPreference(“edit_text”) ora è un codice valido.

Versione 1.1.0-alpha01

5 novembre 2018

Nuove funzionalità

  • Ora puoi impostare un SummaryProvider su una preferenza per configurarne dinamicamente il riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente.
  • Sono state aggiunte implementazioni di SummaryProvider predefinite per ListPreference e EditTextPreference, che, se impostate, aggiorneranno automaticamente il riepilogo della preferenza in modo da riflettere il valore salvato o "Non impostato" se non è stato salvato alcun valore. Questi possono essere impostati con app:useSimpleSummaryProvider="true".
  • È stato aggiunto PreferenceGroup#removePreferenceRecursively, che trova e rimuove in modo ricorsivo una preferenza dal gruppo o da un gruppo nidificato più in basso nella gerarchia.

Modifiche alle API

  • PreferenceFragment e altre classi che utilizzano i fragment del framework sono state ritirate. Devi utilizzare PreferenceFragmentCompat e altre classi compat.

Correzioni di bug

  • È stato corretto il problema per cui iconSpaceReserved non funzionava correttamente con PreferenceCategories.
  • È stato corretto il problema per cui PreferenceCategories non utilizzava colorAccent per il colore del titolo sotto l'API 21.
  • Sono state corrette alcune incoerenze di layout di SeekBarPreference sotto l'API 21.