Preferenza
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.
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 unComponentDialog
o quando utilizzi librerie come@AndroidEntryPoint
di Hilt che aggreganoContext
di Fragment. - Ora la preferenza dipende dall'Attività 1.5.1. (Ie5d22)
PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment
ora propagaheader.extras
come argomentiFragment
.
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 metodoonCreatePreferenceHeader()
suPreferenceHeaderFragmentCompat
. Qualsiasi<Preference>
nell'intestazionePreferenceFragmentCompat
che utilizzaapp: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 sostituendoonCreateInitialDetailFragment()
. 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 interfacceOnPreferenceStartFragmentCallback
,OnNavigateToScreenListener
eOnDisplayPreferenceDialogListener
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 daPreferenceHeaderFragmentCompat
: questo metodo è richiesto a te e non deve essere richiamato manualmente. (Ia6989)
Cambiamenti di comportamento
- I callback PreferenceFragmentCompat per
OnNavigateToScreenListener
eOnDisplayPreferenceDialogListener
ora seguono lo stesso pattern diOnPreferenceTreeClickListener
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
aonPreferenceTreeClick
ora cerca le implementazioni dell'interfacciaOnPreferenceStartFragmentCallback
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 daandroidx.core:core-ktx:1.1.0
eandroidx.fragment:fragment-ktx:1.2.4
, eseguendo il mirroring delle dipendenze dell'artefattopreference
principale e garantendo che l'upgrade dipreference-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 usarePreferenceFragmentCompat
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 ilEditText
visualizzato nella finestra di dialogo corrispondente dopo l'associazione della finestra. Questa funzionalità sostituisce direttamente l'utilizzo di attributi comeandroid:inputType
direttamente suEditTextPreference
, 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 aSeekBarPreference
. - 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"
osetShowSeekBarValue(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.
- L'etichetta del valore ora è nascosta per impostazione predefinita, anche se può essere ancora visualizzata con
- 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"
osetUpdatesContinuously(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.