본문 바로가기
개발/Android

[Android] Preference 정리

by 1인용 놀이터 2025. 5. 12.
728x90
반응형

 

Preference

Android에서는 여러 타입의 설정 항목 UI 컴포넌트를 제공하며, 이들을 XML 코드로 PreferenceFragmentCompat 안에서 사용할 수 있다.

 

Preference 종류

1. Preference : 기본 텍스트 항목, 클릭만 가능

  • 주요 속성 : android:key, android:title, android:summary

2. EditTextPreference : 사용자에게 문자열 입력 받음

  • 주요 속성 : defaultValue, inputType, dialogTitle

3. SwitchPreferenceCompat : ON/OFF 스위치

  • 주요 속성 : defaultValue(true/false)

4. CheckBoxPreference : 체크박스 UI(과거사용)

  • 주요 속성 : 현재는 SwitchPreferenceCompat 사용을 권장한다.

5. List Preference : 리스트에서 선택

  • 주요 속성 : entries, entryValues, defaultValue

6. DropDownPreference : 드롭다운 메뉴(ListPreference 대체 UI)

  • 주요 속성 : entries, entryValues

7. MultiSelectListPreference : 복수 선택 가능한 리스트

  • 주요 속성 : entries, entryValues, defaultValue

8. SeekBarPreference : 슬라이더(숫자 조절용)

  • 주요 속성 : min, max, defaultValue, showSeekBarValue

9. PreferenceCategory : 설정 그룹 묶음용 헤더

  • 주요 속성 : title

10. PreferenceScreen : 설정 항목 그룹화용 컨테이너(루트 또는 중첩 가능)

 

주요 기능

  • 다양한 설정이 가능한 위젯을 제공한다.
  • 설정값은 자동으로 SharedPreferences에 저장된다.
  • 설정 변경 감지 이벤트로 쉽게 구현이 가능하다.

 

 

예제코드 XML(모든 종류 포함)

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="계정 설정">
        <EditTextPreference
            android:key="username"
            android:title="사용자 이름"
            android:defaultValue="Guest" />

        <ListPreference
            android:key="language"
            android:title="언어 선택"
            android:entries="@array/lang_names"
            android:entryValues="@array/lang_values"
            android:defaultValue="ko" />
    </PreferenceCategory>

    <PreferenceCategory android:title="알림 설정">
        <SwitchPreferenceCompat
            android:key="notification_enabled"
            android:title="알림 허용"
            android:defaultValue="true" />

        <MultiSelectListPreference
            android:key="notification_days"
            android:title="알림 요일 선택"
            android:entries="@array/days"
            android:entryValues="@array/day_keys"
            android:defaultValue="@array/default_days" />
    </PreferenceCategory>

    <PreferenceCategory android:title="기타">
        <SeekBarPreference
            android:key="volume"
            android:title="알림 볼륨"
            android:min="0"
            android:max="10"
            android:defaultValue="5"
            android:showSeekBarValue="true" />

        <Preference
            android:key="open_info"
            android:title="앱 정보"
            android:summary="버전 및 개발자 정보 보기" />
    </PreferenceCategory>

</PreferenceScreen>

 

** entries / entryValues는 보통 res/values/arrays.xml에 정의한다.

728x90
반응형