Preferenza

Crea schermate di impostazioni interattive senza dover interagire con lo spazio di archiviazione del dispositivo o gestire l'interfaccia utente.
Aggiornamento più recente Release stabile Candidato di rilascio Versione beta Versione alpha
26 luglio 2023 1.2.1 - - -

Dichiarazione delle dipendenze

Per aggiungere una dipendenza a Preferenza, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per l'app o il modulo:

Trendy

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 ulteriori informazioni sulle dipendenze, vedi Aggiungere dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Contattaci se scopri nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 1.2

Versione 1.2.1

26 luglio 2023

androidx.preference:preference:1.2.1 viene rilasciato. La versione 1.2.1 contiene questi commit.

Correzioni di bug

  • Ora PreferenceHeaderFragmentCompat gestisce correttamente il pulsante Indietro del sistema quando viene utilizzato all'interno di un ComponentDialog o quando utilizzi librerie come @AndroidEntryPoint di Hilt che aggregano Context di Fragment.
  • Ora la preferenza dipende dall'Attività 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 vengono rilasciati. La versione 1.2.0 contiene questi commit.

Modifiche importanti dalla versione 1.1.0

  • È stato aggiunto PreferenceHeaderFragmentCompat per la preferenza relativa ai due riquadri, che si adatta automaticamente in base alle dimensioni del dispositivo usato, rendendolo adatto all'utilizzo su telefoni, pieghevoli e tablet. Il riquadro di intestazione viene fornito sostituendo il metodo onCreatePreferenceHeader() su PreferenceHeaderFragmentCompat. Qualsiasi <Preference> nell'intestazione PreferenceFragmentCompat che utilizza app:fragment farà sì che il frammento venga visualizzato nel secondo riquadro dei dettagli. Il frammento dei dettagli iniziale che deve essere visualizzato prima della selezione manuale di qualsiasi preferenza può essere personalizzato sostituendo onCreateInitialDetailFragment(). L'implementazione predefinita restituisce la prima preferenza in cui è definito un frammento.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • Sono state aggiunte annotazioni con supporto null a molte delle API che in precedenza non specificavano @NonNull o @Nullable. Questa è una potenziale modifica che provoca un errore di origine Kotlin se il valore nullo che hai scelto nel tuo codice Kotlin non corrisponde al valore nullo che è ora definito.

  • Ora PreferenceFragmentCompat cerca le implementazioni delle interfacce OnPreferenceStartFragmentCallback, OnNavigateToScreenListener e OnDisplayPreferenceDialogListener sui frammenti 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 vengono rilasciati senza modifiche dal giorno 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 vengono 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 vengono rilasciati. La versione 1.2.0-alpha02 contiene questi commit.

Modifiche alle API

  • Sono state aggiunte annotazioni con supporto null a molte delle API che in precedenza non specificavano @NonNull o @Nullable. (I04252, Ie2cc0)
  • L'API openPreference() è stata rimossa da PreferenceHeaderFragmentCompat: questo metodo è richiesto a te e non deve essere richiamato manualmente. (Ia6989)

Cambiamenti di comportamento

  • I callback PreferenceFragmentCompat per OnNavigateToScreenListener e OnDisplayPreferenceDialogListener ora seguono lo stesso pattern di OnPreferenceTreeClickListener e cercano ascoltatori validi nella gerarchia dei frammenti padre prima di verificare se il contesto o l'attività di hosting implementa 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 vengono rilasciati. La versione 1.2.0-alpha01 contiene questi commit.

Nuove funzionalità

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

Cambiamenti di comportamento

  • I callback preferiti per OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback e OnPreferenceStartFragmentCallback possono ora essere implementati in un contesto non attivo. getContext() viene controllato per verificare se implementa questi callback prima di controllare getActivity(). Se getContext() restituisce un'attività (caso comune), non vi è alcuna modifica del comportamento.

  • La chiamata di PreferenceFragmentCompat a onPreferenceTreeClick ora cerca le implementazioni dell'interfaccia OnPreferenceStartFragmentCallback sui frammenti 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 vengono rilasciati. La versione 1.1.1 contiene questi commit.

Correzioni di bug

  • PreferenceDialogFragmentCompat non genererà più IllegalStateException quando gonfierà FragmentContainerView da XML. (b/150051716)

Aggiornamenti delle dipendenze

  • Ora la preferenza dipende dal frammento 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, eseguendo il mirroring delle dipendenze dell'artefatto preference principale e garantendo che l'upgrade di preference-ktx aggiorni gli artefatti principali e -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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Se questa è la prima release di 1.1.* a cui stai eseguendo l'aggiornamento, ecco un elenco conciso delle modifiche più importanti apportate dall'ultima release stabile, 1.0.0. Potresti trovare utili anche la guida alle impostazioni, l'app di esempio e l'intervento dell'Android Dev Summit.

Modifiche importanti dalla versione 1.0.0

  • PreferenceFragment e altre classi che utilizzano il framework Fragments sono state ritirate. Dovresti usare PreferenceFragmentCompat e altre classi *compat.
  • Ora puoi impostare un SummaryProvider per una preferenza per configurarne in modo dinamico il riepilogo ogni volta che la preferenza viene aggiornata o diventa visibile all'utente. Consulta la guida per saperne di più.
  • Interfaccia EditTextPreference.OnBindEditTextListener aggiunta. Ciò consente di personalizzare il EditText visualizzato nella finestra di dialogo corrispondente dopo l'associazione della finestra. Questa funzionalità sostituisce direttamente l'utilizzo di attributi come android:inputType direttamente su EditTextPreference, che non è supportato nella libreria AndroidX. Consulta la guida per saperne di più.
  • Aggiunto Preference.setCopyingEnabled() Se impostato, premendo a lungo sulla Preferenza viene visualizzato un menu contestuale che consente di copiare il riepilogo della preferenza.
  • È stato aggiornato lo stile di SeekBarPreference in modo che corrisponda alle specifiche dei materiali. Consulta il log delle modifiche dettagliato per conoscere le altre modifiche apportate a SeekBarPreference.
  • Una grande quantità di correzioni di bug, aggiornamenti di stile, correzioni di compatibilità a livello di API e miglioramenti QOL generali.

Versione 1.1.0-rc01

2 luglio 2019

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

Modifiche alle API

  • Ritira Preference#onInitializeAccessibilityNodeInfo
  • Questo metodo ha inviato tramite proxy le informazioni sul nodo di accessibilità per una preferenza specifica, ma questo è il livello sbagliato per questa personalizzazione. Se invece vuoi regolare le informazioni sull'accessibilità, devi eseguire l'override di onBindViewholder e aggiungere le informazioni sull'accessibilità direttamente alla vista.

Versione 1.1.0-beta01

5 giugno 2019

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

Modifiche importanti dalla versione 1.1.0

Se questa è la prima release 1.1.* a cui stai eseguendo l'aggiornamento, ecco un elenco conciso delle modifiche più importanti dall'ultima release stabile, la 1.1.0. Potresti trovare utili anche la guida alle impostazioni, l'app di esempio e l'intervento dell'Android Dev Summit.

  • PreferenceFragment e altre classi che utilizzano il framework Fragments sono state ritirate. Dovresti usare 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. Consulta la guida per saperne di più.
  • Interfaccia EditTextPreference.OnBindEditTextListener aggiunta. Ciò consente di personalizzare l'elemento EditText visualizzato nella finestra di dialogo corrispondente dopo l'associazione della finestra stessa. Si tratta di un'alternativa diretta all'utilizzo di attributi come android:inputType direttamente nell'EditTextPreference, che non è supportato nella libreria AndroidX. Consulta la guida per saperne di più.
  • Aggiunto Preference.setCopyingEnabled() Se impostato, premendo a lungo sulla Preferenza viene visualizzato un menu contestuale che consente di copiare il riepilogo della preferenza.
  • È stato aggiornato lo stile SeekBarPreference in modo che corrisponda alle specifiche Material. Consulta il log delle modifiche dettagliato per conoscere le altre modifiche a SeekBarPreference.
  • Una grande quantità di correzioni di bug, aggiornamenti di stile, correzioni di compatibilità a livello di API e miglioramenti QOL generali.

Modifiche all'API dalla versione 1.1.0-alpha05

  • Rimuove getOnBindEditTextListener dall'API pubblica. Dovresti utilizzare setOnBindEditTextListener solo quando interagisci con questa API.

Se riscontri problemi o se hai dei suggerimenti per nuove funzionalità, segnalali 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 vengono rilasciati. I commit inclusi in questa versione sono disponibili qui.

Nuove funzionalità

  • Aggiornamento dello stile per le preferenze non selezionabili: il titolo e il riepilogo ora condividono lo stesso colore per chiarire che non è possibile interagire e vengono utilizzati solo per visualizzare le informazioni.
  • Nota: potresti aggiungere enableCopying="true" alle preferenze non selezionabili, quindi puoi premere a lungo per copiare il riepilogo.

Correzioni di bug

  • Correzione di una regressione in cui PreferenceCategory e altre preferenze non selezionabili avrebbero avuto un effetto a onde se selezionate
  • Risolto un problema di accessibilità per cui TalkBack non visualizzava l'opzione DropDownPreference come selezionabile
  • Risolti alcuni problemi di layout RTL
  • Sono state aggiornate alcune annotazioni null in PreferenceFragmentCompat in modo che corrispondano al frammento

Versione 1.1.0-alpha04

13 marzo 2019

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

Nuove funzionalità

L'aggiornamento di SeekBarPreference

  • Stile aggiornato in base alle specifiche dei materiali
    • L'etichetta del valore ora è nascosta per impostazione predefinita, anche se può essere ancora visualizzata con app:showSeekBarValue="true" o setShowSeekBarValue(true). Questa etichetta non fa parte delle specifiche del materiale, ma sappiamo che è molto utilizzata, quindi continueremo a supportarla, anche se sconsigliamo di utilizzarla.
    • L'etichetta del valore ora si aggiorna mentre la SeekBar viene trascinata anziché quando viene rilasciata. Tieni presente che questo non significa che il valore viene aggiornato internamente. Vedi di seguito una nuova API che abilita questa funzionalità.
    • Nota: sebbene sia supportato, devi evitare di impostare un riepilogo in SeekBarPreference, poiché non è previsto e non fa parte delle specifiche Material.
  • Aggiunge il supporto per aggiornamenti continui, consentendo alla SeekBar di aggiornare il proprio valore salvato mentre la SeekBar viene trascinata. Questa opzione può essere attivata da XML o in modo programmatico, con app:updatesContinuously="true" o setUpdatesContinuously(true). Viene attivata ogni volta che la posizione della SeekBar sullo schermo cambia.

Modifiche alle API

  • Aggiunge annotazioni annullabilità mancanti a findPreference()

Correzioni di bug

  • Risolto il 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 vengono rilasciati con le seguenti modifiche.

Correzioni di bug

  • Risolto il problema per cui a volte il popup di copia/incolla non veniva visualizzato nella finestra di dialogo di EditTextPreference
  • Risolto il problema per cui la registrazione dell'adattatore sottostante non veniva annullata correttamente, causando perdite di memoria in determinate condizioni (b/121006469)
  • Risolti alcuni arresti anomali relativi alle finestre di dialogo che si verificavano durante la modifica della configurazione (b/122167543)
  • Risolto il problema di SummaryProvider non funzionante per MultiSelectListPreference (b/123022772)

Versione 1.1.0-alpha02

17 dicembre 2018

Consulta anche la guida alle impostazioni e l'app di esempio aggiornate di recente.

Nuove funzionalità

  • Interfaccia EditTextPreference.OnBindEditTextListener aggiunta Consente di personalizzare l'elemento EditText visualizzato nella finestra di dialogo corrispondente dopo l'associazione della finestra di dialogo. Ad esempio, impostare una lunghezza / tipo di input personalizzato o aggiungere un TextWatcher.

  • Aggiunta di Preference.setCopyingEnabled() Se l'impostazione è impostata, premendo a lungo sulla Preferenza viene visualizzato un menu contestuale che consente di copiare il riepilogo della preferenza. Questa opzione può essere utilizzata per consentire la copia di informazioni statiche, ad esempio ID specifici dell'utente / informazioni sulla versione dell'applicazione.

  • PreferredTheme viene ora 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 semplicemente utilizzare il contesto del frammento/attività.

Modifiche alle API

  • È stato eseguito il refactoring di findPreference() per restituire <T extends Preference> Ciò significa che non è necessario trasmettere esplicitamente Preferenze quando si utilizza 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 valore 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 predefinite di SummaryProvider per ListPreference ed EditTextPreference, che, se impostate, aggiorneranno automaticamente il riepilogo di Preference in modo da riflettere il valore salvato oppure "Not Set" (Non impostato) se non è stato salvato alcun valore. Possono essere impostati con app:use SimpleSummaryProvider="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 il framework Fragments sono state ritirate e dovresti usare PreferenceFragmentCompat e altre classi di compatibilità.

Correzioni di bug

  • È stato risolto il problema di iconSpacePrenotazione che non funzionava correttamente con PreferenceCategories.
  • È stato risolto il problema PreferenceCategories che non utilizzava colorAccent per il colore del titolo inferiore all'API 21.
  • Sono state risolte alcune incoerenze nel layout SeekBarPreference sotto l'API 21.