Ustawienie

Twórz interaktywne ekrany ustawień bez konieczności interakcji z pamięcią urządzenia ani zarządzania interfejsem.
Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja alfa
26 lipca 2023 r. 1.2.1 - - -

Deklarowanie zależności

Aby dodać zależność od ustawienia, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.

Dodaj zależności od potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

Groovy

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")
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Prześlij opinię

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli znajdziesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z istniejącymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.

Utwórz nowy problem

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.2

Wersja 1.2.1

26 lipca 2023 r.

Ukazała się wersja androidx.preference:preference:1.2.1. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • PreferenceHeaderFragmentCompat prawidłowo obsługuje teraz systemowy przycisk Wstecz, gdy jest używany w ComponentDialog lub gdy używasz bibliotek takich jak @AndroidEntryPoint Hilt, które opakowują Context fragmentu.
  • Ustawienie zależy teraz od Activity 1.5.1. (Ie5d22)
  • PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment propaguje teraz header.extras jako argumenty Fragment.

Wersja 1.2.0

26 stycznia 2022 r.

Ukazały się wersje androidx.preference:preference:1.2.0 i androidx.preference:preference-ktx:1.2.0. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Dodano PreferenceHeaderFragmentCompat do ustawień dwupanelowych, które automatycznie dostosowują się do rozmiaru używanego urządzenia, dzięki czemu można ich używać na telefonach, urządzeniach składanych i tabletach. Panel nagłówka jest udostępniany przez zastąpienie metody onCreatePreferenceHeader() w PreferenceHeaderFragmentCompat. Każdy element <Preference> w nagłówku PreferenceFragmentCompat, który używa app:fragment, spowoduje wyświetlenie tego fragmentu w drugim panelu szczegółów. Początkowy fragment szczegółów, który ma być wyświetlany, zanim zostanie ręcznie wybrane jakiekolwiek ustawienie, można dostosować, zastępując onCreateInitialDetailFragment(). Implementacja domyślna zwraca pierwsze ustawienie, w którym zdefiniowano fragment.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
    override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
        return PreferenceHeader()
    }
}
  • Do wielu interfejsów API, które wcześniej nie określały @NonNull ani @Nullable, dodano adnotacje o dopuszczalności wartości null. Jeśli możliwość przyjmowania wartości null wybrana w kodzie Kotlin nie odpowiada możliwości przyjmowania wartości null, która jest teraz zdefiniowana, może to spowodować przerwanie kompilacji kodu Kotlin.

  • PreferenceFragmentCompat szuka teraz implementacji interfejsów OnPreferenceStartFragmentCallback, OnNavigateToScreenListener i OnDisplayPreferenceDialogListener w nadrzędnych fragmentach, zanim sprawdzi, czy kontekst hosta lub aktywność implementują te interfejsy.

Wersja 1.2.0-rc01

15 grudnia 2021 roku

Ukazały się wersje androidx.preference:preference:1.2.0-rc01 i androidx.preference:preference-ktx:1.2.0-rc01. Nie wprowadzono w nich żadnych zmian od wersji 1.2.0-beta01. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Wersja 1.2.0-beta01

17 listopada 2021 r.

Ukazały się wersje androidx.preference:preference:1.2.0-beta01 i androidx.preference:preference-ktx:1.2.0-beta01. Nie wprowadzono w nich żadnych zmian od wersji Preference 1.2.0-alpha02. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Wersja 1.2.0-alpha02

3 listopada 2021 r.

Ukazały się wersje androidx.preference:preference:1.2.0-alpha02 i androidx.preference:preference-ktx:1.2.0-alpha02. Wersja 1.2.0-alpha02 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Do wielu interfejsów API, które wcześniej nie określały @NonNull ani @Nullable, dodano adnotacje o dopuszczalności wartości null. (I04252, Ie2cc0)
  • Usunięto interfejs API openPreference() z PreferenceHeaderFragmentCompat – ta metoda jest wywoływana automatycznie i nie należy jej wywoływać ręcznie. (Ia6989)

Zmiany w zachowaniu

  • Wywołania zwrotne PreferenceFragmentCompat dla OnNavigateToScreenListener i OnDisplayPreferenceDialogListener są teraz zgodne z tym samym wzorcem co OnPreferenceTreeClickListener i wyszukują prawidłowe odbiorniki w hierarchii fragmentów nadrzędnych, zanim sprawdzą, czy kontekst hosta lub aktywność implementują te interfejsy. (I7ae6c)

Wersja 1.2.0-alpha01

27 października 2021 r.

Ukazały się wersje androidx.preference:preference:1.2.0-alpha01 i androidx.preference:preference-ktx:1.2.0-alpha01. Wersja 1.2.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodano PreferenceHeaderFragmentCompat do ustawień dwupanelowych (I9a2d8)

Zmiany w zachowaniu

  • Wywołania zwrotne ustawień dla OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback i OnPreferenceStartFragmentCallback można teraz implementować w kontekście innym niż aktywność. Przed sprawdzeniem getActivity() sprawdzamy, czy getContext() implementuje te wywołania zwrotne. Jeśli getContext() zwraca aktywność (co jest typowe), nie nastąpi żadna zmiana w zachowaniu.

  • Wywołanie onPreferenceTreeClick w PreferenceFragmentCompat szuka teraz implementacji interfejsu OnPreferenceStartFragmentCallback w nadrzędnych fragmentach, zanim weźmie pod uwagę implementację aktywności. (c64eed)

Wersja 1.1

Wersja 1.1.1

15 kwietnia 2020 roku

Ukazały się wersje androidx.preference:preference:1.1.1 i androidx.preference:preference-ktx:1.1.1. Wersja 1.1.1 zawiera te zatwierdzenia.

Poprawki błędów

  • PreferenceDialogFragmentCompat nie będzie już zgłaszać IllegalStateException podczas rozszerzania FragmentContainerView z pliku XML. (b/150051716)

Aktualizacje zależności

  • Ustawienie zależy teraz od fragmentu 1.2.4. (aosp/1277317)
  • Zależność preference-ktx zależy teraz od androidx.core:core-ktx:1.1.0 i androidx.fragment:fragment-ktx:1.2.4, co odzwierciedla zależności głównego artefaktu preference i zapewnia, że uaktualnienie preference-ktx aktualizuje zarówno główny artefakt, jak i artefakt -ktx zależności przechodnich. (aosp/1277319)

Wersja 1.1.0

5 września 2019 r.

Ukazały się wersje androidx.preference:preference:1.1.0 i androidx.preference:preference-ktx:1.1.0. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Jeśli jest to pierwsza wersja 1.1.*, którą aktualizujesz, oto krótka lista większych zmian od ostatniej stabilnej wersji 1.0.0. Przydatne mogą być też przewodnik po ustawieniach, przykładowa aplikacja i prezentacja z Android Dev Summit.

Ważne zmiany od wersji 1.0.0

  • PreferenceFragment i inne klasy używające fragmentów frameworka zostały wycofane. Zamiast nich należy używać PreferenceFragmentCompat i innych klas *compat.
  • Możesz teraz ustawić SummaryProvider w ustawieniu, aby dynamicznie konfigurować jego podsumowanie za każdym razem, gdy ustawienie jest aktualizowane lub staje się widoczne dla użytkownika. Więcej informacji znajdziesz w przewodniku.
  • Dodano interfejs EditTextPreference.OnBindEditTextListener. Umożliwia to dostosowanie EditText wyświetlanego w odpowiednim oknie po powiązaniu okna. Jest to bezpośredni zamiennik używania atrybutów takich jak android:inputType bezpośrednio w EditTextPreference, co nie jest obsługiwane w bibliotece AndroidX. Więcej informacji znajdziesz w przewodniku.
  • Dodano Preference.setCopyingEnabled(). Gdy jest ustawiona, długie naciśnięcie ustawienia spowoduje wyświetlenie menu kontekstowego, które umożliwia skopiowanie podsumowania ustawienia.
  • Zaktualizowano styl SeekBarPreference, aby był zgodny ze specyfikacjami Material. Inne zmiany w SeekBarPreference znajdziesz w szczegółowym dzienniku zmian.
  • Wprowadzono wiele poprawek błędów, aktualizacji stylu, poprawek zgodności z poziomem interfejsu API i ogólnych ulepszeń jakości.

Wersja 1.1.0-rc01

2 lipca 2019 r.

Ukazały się wersje androidx.preference:preference:1.1.0-rc01 i androidx.preference:preference-ktx:1.1.0-rc01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Zmiany w interfejsie API

  • Wycofanie Preference#onInitializeAccessibilityNodeInfo
  • Ta metoda przekazywała informacje o węźle ułatwień dostępu dla konkretnego ustawienia, ale jest to niewłaściwa warstwa do tego dostosowania. Jeśli chcesz dostosować informacje o ułatwieniach dostępu, zastąp onBindViewHolder i dodaj informacje o ułatwieniach dostępu bezpośrednio do widoku.

Wersja 1.1.0-beta01

5 czerwca 2019 r.

Ukazały się wersje androidx.preference:preference:1.1.0-beta01 i androidx.preference:preference-ktx:1.1.0-beta01. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Ważne zmiany od wersji 1.1.0

Jeśli jest to pierwsza wersja 1.1.*, którą aktualizujesz, oto krótka lista większych zmian od ostatniej stabilnej wersji 1.1.0. Przydatne mogą być też przewodnik po ustawieniach, przykładowa aplikacja i prezentacja z Android Dev Summit.

  • `PreferenceFragment` i inne klasy używające fragmentów frameworka zostały wycofane. Zamiast nich należy używać `PreferenceFragmentCompat` i innych klas *compat.
  • Możesz teraz ustawić SummaryProvider w ustawieniu, aby dynamicznie konfigurować jego podsumowanie za każdym razem, gdy ustawienie jest aktualizowane lub staje się widoczne dla użytkownika. Więcej informacji znajdziesz w przewodniku.
  • Dodano interfejs EditTextPreference.OnBindEditTextListener. Umożliwia to dostosowanie EditText wyświetlanego w odpowiednim oknie po powiązaniu okna. Jest to bezpośredni zamiennik używania atrybutów takich jak android:inputType bezpośrednio w EditTextPreference, co nie jest obsługiwane w bibliotece AndroidX. Więcej informacji znajdziesz w przewodniku.
  • Dodano Preference.setCopyingEnabled(). Gdy jest ustawiona, długie naciśnięcie ustawienia spowoduje wyświetlenie menu kontekstowego, które umożliwia skopiowanie podsumowania ustawienia.
  • Zaktualizowano styl SeekBarPreference, aby był zgodny ze specyfikacjami Material. Inne zmiany w SeekBarPreference znajdziesz w szczegółowym dzienniku zmian.
  • Wprowadzono wiele poprawek błędów, aktualizacji stylu, poprawek zgodności z poziomem interfejsu API i ogólnych ulepszeń jakości.

Zmiany w interfejsie API od wersji 1.1.0-alpha05

  • Usuwa getOnBindEditTextListener z publicznego interfejsu API. Podczas korzystania z tego interfejsu API należy używać tylko setOnBindEditTextListener.

Jeśli napotkasz jakieś problemy lub masz sugestie dotyczące nowych funkcji, zgłoś błąd tutaj.

Wersja 1.1.0-alpha05

7 maja 2019 r.

Ukazały się wersje androidx.preference:preference:1.1.0-alpha05 i androidx.preference:preference-ktx:1.1.0-alpha05. Zatwierdzenia zawarte w tej wersji znajdziesz tutaj.

Nowe funkcje

  • Zaktualizowano styl ustawień, których nie można wybrać – tytuł i podsumowanie mają teraz ten sam kolor, aby było jasne, że nie można z nimi wchodzić w interakcję i służą tylko do wyświetlania informacji.
  • Uwaga: możesz rozważyć dodanie enableCopying="true" do ustawień, których nie można wybrać, aby można było przytrzymać, aby skopiować podsumowanie.

Poprawki błędów

  • Naprawiliśmy regresję, która powodowała, że po wybraniu PreferenceCategory i innych ustawień, których nie można wybrać, pojawiał się efekt fali.
  • Naprawiliśmy problem z ułatwieniami dostępu, który powodował, że TalkBack nie widział DropDownPreference jako klikalnego.
  • Naprawiliśmy kilka problemów z układem od prawej do lewej.
  • Zaktualizowaliśmy niektóre adnotacje o możliwości przyjmowania wartości null w PreferenceFragmentCompat, aby były zgodne z fragmentem.

Wersja 1.1.0-alpha04

13 marca 2019 r.

Ukazały się wersje androidx.preference:preference:1.1.0-alpha04 i androidx.preference:preference-ktx:1.1.0-alpha04. Pełną listę zatwierdzeń zawartych w tej wersji znajdziesz tutaj.

Nowe funkcje

Aktualizacja SeekBarPreference!

  • Zaktualizowano styl, aby był zgodny ze specyfikacjami Material.
    • Etykieta wartości jest teraz domyślnie ukryta, ale nadal można ją wyświetlać za pomocą app:showSeekBarValue="true" lub setShowSeekBarValue(true). Ta etykieta nie jest częścią specyfikacji Material, ale rozumiemy, że jest często używana, dlatego będziemy ją nadal obsługiwać – mimo że nie zalecamy jej używania.
    • Etykieta wartości jest teraz aktualizowana podczas przeciągania SeekBar, a nie po jej zwolnieniu. Pamiętaj, że nie oznacza to, że wartość jest aktualizowana wewnętrznie. Poniżej znajdziesz nowy interfejs API, który umożliwia tę funkcję.
    • Uwaga: mimo że jest to obsługiwane, należy unikać ustawiania podsumowania w SeekBarPreference, ponieważ nie jest to zamierzone i nie jest częścią specyfikacji Material.
  • Dodaje obsługę ciągłych aktualizacji, dzięki czemu SeekBar może aktualizować zapisaną wartość podczas przeciągania. Można to włączyć w pliku XML lub programowo za pomocą app:updatesContinuously="true" lub setUpdatesContinuously(true). Będzie to wywoływane za każdym razem, gdy zmieni się położenie SeekBar na ekranie.

Zmiany w interfejsie API

  • Dodaje brakujące adnotacje o dopuszczalności wartości null do findPreference().

Poprawki błędów

  • Naprawiliśmy błąd, który powodował, że odbiorniki menu kontekstowego nie były prawidłowo usuwane, jeśli kopiowanie nie było włączone.

Wersja 1.1.0-alpha03

7 lutego 2019 r.

androidx.preference:preference 1.1.0-alpha03

Ukazały się wersje androidx.preference:preference 1.1.0-alpha03 i androidx.preference:preference-ktx 1.1.0-alpha03 z następującymi zmianami.

Poprawki błędów

  • Naprawiliśmy problem, który powodował, że w oknie EditTextPreference czasami nie wyświetlało się okienko kopiowania/wklejania.
  • Naprawiliśmy problem, który powodował, że podstawowy adapter nie był prawidłowo wyrejestrowywany, co w określonych warunkach powodowało wycieki pamięci (b/121006469).
  • Naprawiliśmy kilka awarii związanych z oknami, które występowały podczas zmiany konfiguracji (b/122167543)
  • Naprawiliśmy problem, który powodował, że SummaryProvider nie działał w przypadku MultiSelectListPreference (b/123022772).

Wersja 1.1.0-alpha02

17 grudnia 2018 r.

Zapoznaj się też z niedawno zaktualizowanym przewodnikiem po ustawieniach i przykładową aplikacją.

Nowe funkcje

  • Dodano interfejs EditTextPreference.OnBindEditTextListener. Umożliwia to dostosowanie EditText wyświetlanego w odpowiednim oknie po powiązaniu okna. Można np. ustawić niestandardowy typ danych wejściowych lub długość albo dodać TextWatcher.

  • Dodano Preference.setCopyingEnabled(). Gdy jest ustawiona, długie naciśnięcie ustawienia spowoduje wyświetlenie menu kontekstowego, które umożliwia skopiowanie podsumowania ustawienia. Można go używać do kopiowania informacji statycznych, takich jak identyfikatory specyficzne dla użytkownika lub informacje o wersji aplikacji.

  • preferenceTheme jest teraz stosowany do motywu aktywności. Oznacza to, że podczas tworzenia ustawienia w kodzie nie musisz już używać kontekstu z PreferenceManager#getContext() – możesz po prostu użyć kontekstu fragmentu lub aktywności.

Zmiany w interfejsie API

  • Przebudowano findPreference(), aby zwracał <T extends Preference> Oznacza to, że podczas korzystania z findPreference() nie musisz już jawnie rzutować ustawień. Na przykład, EditTextPreference preference = findPreference(“edit_text”) jest teraz prawidłowy.

Wersja 1.1.0-alpha01

5 listopada 2018 r.

Nowe funkcje

  • Możesz teraz ustawić SummaryProvider w ustawieniu, aby dynamicznie konfigurować jego podsumowanie za każdym razem, gdy ustawienie jest aktualizowane lub staje się widoczne dla użytkownika.
  • Dodano domyślne implementacje SummaryProvider dla ListPreference i EditTextPreference, które po ustawieniu automatycznie aktualizują podsumowanie ustawienia, aby odzwierciedlało jego zapisaną wartość lub „Nie ustawiono”, jeśli nie zapisano żadnej wartości. Można je ustawić za pomocą app:useSimpleSummaryProvider=”true”.
  • Dodano PreferenceGroup#removePreferenceRecursively, które rekurencyjnie znajduje i usuwa ustawienie z grupy lub zagnieżdżonej grupy w hierarchii.

Zmiany w interfejsie API

  • PreferenceFragment i inne klasy używające fragmentów frameworka zostały wycofane. Zamiast nich należy używać PreferenceFragmentCompat i innych klas *compat.

Poprawki błędów

  • Naprawiliśmy problem, który powodował, że iconSpaceReserved nie działał prawidłowo w przypadku PreferenceCategories.
  • Naprawiliśmy problem, który powodował, że PreferenceCategories nie używały colorAccent do kolorowania tytułu w wersjach interfejsu API starszych niż 21.
  • Naprawiliśmy niektóre niespójności układu SeekBarPreference w wersjach interfejsu API starszych niż 21.