환경설정
최근 업데이트 | 안정화 버전 | 출시 후보 버전 | 베타 버전 | 알파 버전 |
---|---|---|---|---|
2023년 7월 26일 | 1.2.1 | - | - | - |
종속 항목 선언
Preference의 종속 항목을 추가하려면 프로젝트에 Google Maven 저장소를 추가해야 합니다. 자세한 내용은 Google Maven 저장소를 읽어보세요.
다음과 같이 앱 또는 모듈의 build.gradle
파일에 필요한 아티팩트의 종속 항목을 추가합니다.
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") }
종속 항목에 관한 자세한 내용은 빌드 종속 항목 추가를 참고하세요.
의견
제출하신 의견은 Jetpack을 개선하는 데 도움이 됩니다. 새로운 문제를 발견하거나 라이브러리 개선을 위한 아이디어가 있다면 Google에 알려 주세요. 새 문제를 제출하기 전에 이 라이브러리의 기존 문제를 살펴보시기 바랍니다. 별표 버튼을 클릭하여 기존 문제에 투표할 수 있습니다.
자세한 내용은 Issue Tracker 문서를 참고하세요.
버전 1.2
버전 1.2.1
2023년 7월 26일
androidx.preference:preference:1.2.1
이 출시되었습니다. 버전 1.2.1에 포함된 커밋을 확인하세요.
버그 수정
- 이제
PreferenceHeaderFragmentCompat
가ComponentDialog
내에서 사용될 때 또는 프래그먼트의Context
를 래핑하는 Hilt의@AndroidEntryPoint
와 같은 라이브러리를 사용할 때 시스템 뒤로 버튼을 올바르게 처리합니다. - 이제 Preference가 Activity 1.5.1에 종속됩니다. 추가했습니다. (Ie5d22)
- 이제
PreferenceHeaderFragmentCompat.onCreateInitialDetailFragment
가header.extras
를Fragment
인수로 전파합니다.
버전 1.2.0
2022년 1월 26일
androidx.preference:preference:1.2.0
및 androidx.preference:preference-ktx:1.2.0
이 출시되었습니다. 버전 1.2.0에 포함된 커밋을 확인하세요.
1.1.0 이후 중요 변경사항
- 사용하는 기기의 크기에 따라 자동으로 조정되는 2창 환경설정을 위해
PreferenceHeaderFragmentCompat
를 추가했습니다. 따라서 스마트폰, 폴더블, 태블릿에서 사용하기에 적합합니다. 헤더 창은PreferenceHeaderFragmentCompat
의onCreatePreferenceHeader()
메서드를 재정의하여 제공됩니다.app:fragment
를 사용하는PreferenceFragmentCompat
헤더에<Preference>
가 있으면 이 프래그먼트가 두 번째 세부정보 창에 나타납니다. 환경설정을 수동으로 선택하기 전에 표시되는 초기 세부 프래그먼트는onCreateInitialDetailFragment()
를 재정의하여 맞춤설정할 수 있습니다. 기본 구현에서는 프래그먼트가 정의된 첫 번째 환경설정을 반환합니다.
class TwoPanePreference : PreferenceHeaderFragmentCompat() {
override fun onCreatePreferenceHeader(): PreferenceFragmentCompat {
return PreferenceHeader()
}
}
이전에
@NonNull
또는@Nullable
을 지정하지 않았던 많은 API에 null 허용 여부 주석이 추가되었습니다. 이는 Kotlin 코드에서 선택한 null 허용 여부가 현재 정의된 null 허용 여부와 일치하지 않을 경우 Kotlin 소스 브레이킹 체인지일 수 있습니다.PreferenceFragmentCompat
는 이제 상위 프래그먼트에서OnPreferenceStartFragmentCallback
,OnNavigateToScreenListener
,OnDisplayPreferenceDialogListener
인터페이스의 구현을 검색한 후 호스팅 컨텍스트 또는 활동에서 이러한 인터페이스를 구현하는지 확인합니다.
버전 1.2.0-rc01
2021년 12월 15일
androidx.preference:preference:1.2.0-rc01
및 androidx.preference:preference-ktx:1.2.0-rc01
버전은 1.2.0-beta01
이후 변경사항 없이 출시되었습니다. 버전 1.2.0-rc01에 포함된 커밋을 확인하세요.
버전 1.2.0-beta01
2021년 11월 17일
androidx.preference:preference:1.2.0-beta01
및 androidx.preference:preference-ktx:1.2.0-beta01
이 Preference 1.2.0-alpha02에서 변경사항 없이 출시되었습니다. 버전 1.2.0-beta01에 포함된 커밋을 확인하세요.
버전 1.2.0-alpha02
2021년 11월 3일
androidx.preference:preference:1.2.0-alpha02
및 androidx.preference:preference-ktx:1.2.0-alpha02
가 출시되었습니다. 버전 1.2.0-alpha02에 포함된 커밋을 확인하세요.
API 변경사항
- 이전에
@NonNull
또는@Nullable
을 지정하지 않았던 많은 API에 null 허용 여부 주석이 추가되었습니다. (I04252, Ie2cc0) PreferenceHeaderFragmentCompat
에서openPreference()
API를 삭제했습니다. 이 메서드는 자동으로 호출되며 수동으로 호출하면 안 됩니다. (Ia6989)
동작 변경사항
OnNavigateToScreenListener
의 PreferenceFragmentCompat 콜백과OnDisplayPreferenceDialogListener
는 이제OnPreferenceTreeClickListener
와 동일한 패턴을 따르며 호스팅 컨텍스트 또는 활동이 이러한 인터페이스를 구현하는지 확인하기 전에 상위 프래그먼트 계층 구조에 유효한 리스너가 있는지 조회합니다. (I7ae6c)
버전 1.2.0-alpha01
2021년 10월 27일
androidx.preference:preference:1.2.0-alpha01
및 androidx.preference:preference-ktx:1.2.0-alpha01
이 출시되었습니다. 버전 1.2.0-alpha01에 포함된 커밋을 확인하세요.
새로운 기능
- 두 개의 창 환경설정을 위해
PreferenceHeaderFragmentCompat
을 추가했습니다. (I9a2d8)
동작 변경사항
이제 비활동 컨텍스트에서 OnPreferenceDisplayDialogCallback, OnPreferenceStartScreenCallback, OnPreferenceStartFragmentCallback의 환경설정 콜백을 구현할 수 있습니다. getActivity()를 확인하기 전에 getContext()를 확인하여 여기에서 이러한 콜백을 구현하는지 봅니다. getContext()가 활동을 반환하는 경우(일반적인 경우) 동작이 변경되지 않습니다.
PreferenceFragmentCompat
의onPreferenceTreeClick
호출은 이제 활동의 구현을 고려하기 전에 상위 프래그먼트의OnPreferenceStartFragmentCallback
인터페이스의 구현을 찾습니다. (c64eed)
버전 1.1
버전 1.1.1
2020년 4월 15일
androidx.preference:preference:1.1.1
및 androidx.preference:preference-ktx:1.1.1
가 출시되었습니다. 버전 1.1.1에 포함된 커밋을 확인하세요.
버그 수정
- xml에서
FragmentContainerView
를 확장할 때PreferenceDialogFragmentCompat
에서IllegalStateException
이 더 이상 발생하지 않습니다. (b/150051716 참조)
종속 항목 업데이트
- 이제 Preference가 Fragment
1.2.4
에 종속됩니다. (aosp/1277317 참조) preference-ktx
종속 항목은 이제androidx.core:core-ktx:1.1.0
과androidx.fragment:fragment-ktx:1.2.4
에 종속되므로, 기본preference
아티팩트의 종속 항목을 미러링하고 전이 종속 항목의 기본 및-ktx
아티팩트 모두를preference-ktx
업그레이드로 업데이트할 수 있습니다. (aosp/1277319 참조)
버전 1.1.0
2019년 9월 5일
androidx.preference:preference:1.1.0
및 androidx.preference:preference-ktx:1.1.0
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
이 버전이 업데이트할 첫 번째 1.1.*
릴리스라면 마지막 안정적인 1.0.0
출시 이후의 큰 변경사항을 간략히 설명한 다음 목록을 참고하세요. 설정 가이드, 샘플 앱 및 Android Dev Summit 대화도 유용할 수 있습니다.
1.0.0 이후 중요 변경사항
- 프레임워크 Fragment를 사용하는
PreferenceFragment
및 기타 클래스가 지원 중단되었습니다. 대신PreferenceFragmentCompat
및 기타 *compat 클래스를 사용해야 합니다. - 이제 Preference에서
SummaryProvider
를 설정하여 Preference가 업데이트되거나 사용자에게 표시될 때마다 요약을 동적으로 구성할 수 있습니다. 자세한 내용은 가이드를 참고하세요. EditTextPreference.OnBindEditTextListener
인터페이스가 추가되었습니다. 이러한 추가를 통해 대화상자가 결합된 후 대화상자에 표시되는EditText
를 맞춤설정할 수 있습니다. 이 기능은EditTextPreference
에서 직접android:inputType
과 같은 속성을 사용하는 직접적인 대체 방법이며 AndroidX 라이브러리에서는 지원되지 않습니다. 자세한 내용은 가이드를 참조하세요.Preference.setCopyingEnabled()
가 추가되었습니다. 이에 따라 설정 시 Preference를 길게 누르면 Preference 요약을 복사할 수 있는 컨텍스트 메뉴가 표시됩니다.- 머티리얼 사양과 일치하도록
SeekBarPreference
스타일 지정이 업데이트되었습니다.SeekBarPreference
에 관한 다른 변경사항은 상세 changelog를 참조하세요. - 대량의 버그를 수정하고 스타일을 업데이트하며 API 레벨 호환성을 수정하고 일반적인 QOL을 개선했습니다.
버전 1.1.0-rc01
2019년 7월 2일
androidx.preference:preference:1.1.0-rc01
및 androidx.preference:preference-ktx:1.1.0-rc01
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
API 변경사항
Preference#onInitializeAccessibilityNodeInfo
가 지원 중단되었습니다.- 이 메서드는 특정 환경설정의 접근성 노드 정보를 프록시 처리했지만 맞춤설정에는 잘못된 레이어입니다. 접근성 정보를 조정하려면 대신 onBindViewHolder를 재정의하고 접근성 정보를 뷰에 직접 추가해야 합니다.
버전 1.1.0-beta01
2019년 6월 5일
androidx.preference:preference:1.1.0-beta01
및 androidx.preference:preference-ktx:1.1.0-beta01
가 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
1.1.0 이후 중요 변경사항
이 버전이 업데이트할 첫 번째 1.1.* 출시인 경우 마지막 안정적인 출시 1.1.0 이후의 큰 변경사항이 담긴 간략한 목록이 여기 있습니다. 설정 가이드, 샘플 앱 및 Android Dev Summit 대화도 유용할 수 있습니다.
- 프레임워크 Fragment를 사용하는 PreferenceFragment 및 기타 클래스가 지원 중단되었습니다. 대신 PreferenceFragmentCompat와 기타 *compat 클래스를 사용해야 합니다.
- 이제 환경설정에서 SummaryProvider를 설정하여 환경설정이 업데이트되거나 사용자에게 표시될 때마다 요약을 동적으로 구성할 수 있습니다. 자세한 내용은 가이드를 참고하세요.
EditTextPreference.OnBindEditTextListener
인터페이스가 추가되었습니다. 이러한 추가를 통해 대화상자가 결합된 후 대화상자에 표시되는 EditText를 맞춤설정할 수 있습니다. 이것은 EditTextPreference에서 직접 android:inputType과 같은 속성을 사용하는 직접적인 대체 방법이며 AndroidX 라이브러리에서는 지원되지 않습니다. 자세한 내용은 가이드를 참조하세요.Preference.setCopyingEnabled()
가 추가되었습니다. 이에 따라 설정 시 Preference를 길게 누르면 Preference 요약을 복사할 수 있는 컨텍스트 메뉴가 표시됩니다.- SeekBarPreference 스타일 지정을 업데이트하여 소재 사양과 일치합니다. SeekBarPreference에 관한 다른 변경사항은 상세 changelog를 참조하세요.
- 대량의 버그를 수정하고 스타일을 업데이트하며 API 레벨 호환성을 수정하고 일반적인 QOL을 개선했습니다.
1.1.0-alpha05 이후 API 변경사항
- 공개 API에서 getOnBindEditTextListener를 삭제합니다. 이 API와 상호작용할 때만 setOnBindEditTextListener를 사용할 필요가 있습니다.
문제가 발생하거나 새로운 기능에 관한 제안사항이 있으면 여기에 버그를 신고하세요.
버전 1.1.0-alpha05
2019년 5월 7일
androidx.preference:preference:1.1.0-alpha05
및 androidx.preference:preference-ktx:1.1.0-alpha05
이 출시되었습니다. 이 버전에 포함된 커밋은 여기에서 확인할 수 있습니다.
새로운 기능
- 선택 불가능한 환경설정의 스타일 지정을 업데이트했습니다. 이제 제목과 요약이 같은 색상을 공유해 두 가지가 상호작용할 수 없으며 정보 표시에만 사용됨을 분명히 했습니다.
- 참고: 선택 불가능한 환경설정에
enableCopying="true"
를 추가하는 것을 고려할 수 있습니다. 그렇게 하면 길게 눌러 요약을 복사할 수 있습니다.
버그 수정
- PreferenceCategory 및 기타 선택 불가능한 환경설정에서 선택 시 파급 효과가 발생하는 회귀 문제를 해결했습니다.
- TalkBack에서 DropDownPreference가 클릭 가능한 것으로 표시되지 않는 접근성 문제를 해결했습니다.
- 일부 RTL 레이아웃 문제를 해결했습니다.
- PreferenceFragmentCompat에서 일부 nullable 주석을 업데이트하여 Fragment와 일치합니다.
버전 1.1.0-alpha04
2019년 3월 13일
androidx.preference:preference:1.1.0-alpha04
및 androidx.preference:preference-ktx:1.1.0-alpha04
가 출시되었습니다. 이 버전에 포함된 커밋의 전체 목록은 여기에서 확인할 수 있습니다.
새로운 기능
SeekBarPreference
업데이트!
- 머티리얼 사양과 일치하도록 스타일 지정이 업데이트되었습니다.
- 값 라벨이 여전히
app:showSeekBarValue="true"
또는setShowSeekBarValue(true)
로 표시될 수 있지만 이제 기본적으로 숨겨져 있습니다. 이 라벨은 머티리얼 사양의 일부는 아니지만 많이 사용되는 사실을 알기 때문에 사용을 권장하지는 않더라도 지원은 계속됩니다. - 이제 SeekBar를 놓을 때가 아니라 드래그하는 동안 값 라벨이 업데이트됩니다. 내부적으로 값이 업데이트된다는 점은 아님에 주의하세요. 이와 같은 기능을 사용 설정하는 새로운 API는 아래를 참조하세요.
- 참고: 지원은 되지만 SeekBarPreference에서 요약은 설정하지 않아야 합니다. 목적에도 맞지 않고 소재 사양의 일부도 아니기 때문입니다.
- 값 라벨이 여전히
- 지속적인 업데이트 지원을 추가하여 SeekBar가 드래그되는 동안 저장된 값을 업데이트할 수 있도록 합니다. XML에서 또는 프로그래매틱 방식으로
app:updatesContinuously="true"
또는setUpdatesContinuously(true)
로 사용 설정할 수 있습니다. 화면에서 SeekBar의 위치가 변경될 때마다 실행됩니다.
API 변경사항
- 누락된 null 허용 여부 주석이
findPreference()
에 추가되었습니다.
버그 수정
- 복사가 사용 설정되지 않은 경우 컨텍스트 메뉴 리스너가 올바르게 삭제되지 않는 버그를 수정했습니다.
버전 1.1.0-alpha03
2019년 2월 7일
androidx.preference:preference 1.1.0-alpha03
androidx.preference:preference 1.1.0-alpha03
및 androidx.preference:preference-ktx 1.1.0-alpha03
버전이 다음 변경사항과 함께 출시되었습니다.
버그 수정
- EditTextPreference의 대화상자에 가끔 복사/붙여넣기 팝업이 표시되지 않는 문제를 해결했습니다.
- 기본 어댑터가 올바르게 등록 취소되지 않아 특정 조건에서 메모리 누수가 발생하는 문제를 수정했습니다(b/121006469).
- 구성 변경 중 발생하는 일부 대화상자 관련 비정상 종료 문제를 해결했습니다(b/122167543).
- MultiSelectListPreference에 SummaryProvider가 작동하지 않는 문제를 해결했습니다(b/123022772).
버전 1.1.0-alpha02
2018년 12월 17일
새로운 기능
EditTextPreference.OnBindEditTextListener
인터페이스가 추가되었습니다. 이러한 추가를 통해 대화상자가 결합된 후 그 대화상자에 표시되는 EditText를 맞춤설정할 수 있습니다. 예를 들어 맞춤 입력 유형/길이를 설정하거나 TextWatcher를 추가합니다.Preference.setCopyingEnabled()
가 추가되었습니다. 이에 따라 설정 시 Preference를 길게 누르면 Preference 요약을 복사할 수 있는 컨텍스트 메뉴가 표시됩니다. 사용자별 ID/애플리케이션 버전 정보와 같은 정적 정보를 복사하는 데 사용할 수 있습니다.이제 preferenceTheme이 활동 테마에 적용됩니다. 즉, 코드에서 Preference를 생성할 때 더 이상
PreferenceManager#getContext()
의 컨텍스트를 사용할 필요가 없습니다. Fragment/Activity 컨텍스트를 사용하기만 하면 됩니다.
API 변경사항
findPreference()
가 리팩터링되어<T extends Preference>
를 반환합니다. 즉, findPreference()를 사용할 때 Preference를 명시적으로 변환할 필요가 없습니다. 예를 들어EditTextPreference preference = findPreference(“edit_text”)
는 이제 유효한 코드입니다.
버전 1.1.0-alpha01
2018년 11월 5일
새로운 기능
- 이제 Preference에서 SummaryProvider를 설정하여 Preference가 업데이트되거나 사용자에게 표시될 때마다 요약을 동적으로 구성할 수 있습니다.
- ListPreference와 EditTextPreference에 기본 SummaryProvider 구현이 추가되었습니다. 이로써 설정 시 자동으로 Preference 요약을 업데이트하여 저장된 값을 반영하거나 저장된 값이 없는 경우 'Not Set'을 반영합니다. app:useSimpleSummaryProvider=”true”로 설정할 수도 있습니다.
- 그룹 또는 계층 구조의 하위에 있는 중첩된 그룹에서 Preference를 반복적으로 찾아서 삭제하는 PreferenceGroup#removePreferenceRecursively가 추가되었습니다.
API 변경사항
- 프레임워크 Fragment를 사용하는 PreferenceFragment 및 기타 클래스가 지원 중단되었습니다. 대신 PreferenceFragmentCompat과 기타 compat 클래스를 사용해야 합니다.
버그 수정
- PreferenceCategories에서 iconSpaceReserved가 올바르게 작동되지 않는 문제를 해결했습니다.
- PreferenceCategories가 API 21 이하에서 제목 색상에 colorAccent를 사용하지 않는 문제를 해결했습니다.
- API 21 이하에서 일부 SeekBarPreference 레이아웃 불일치 문제를 해결했습니다.