이 영역을 누르면 첫 페이지로 이동
CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

페이지 맨 위로 올라가기

CodeJUN

심심해서 하는 블로그

Preference View(설정창 구현하기)

  • 2019.07.18 13:48
  • Android

앱 내 설정화면을 구현하기 위해 최적인 레이아웃이 있습니다. 구글에서 라이브러리 형태로 제공 중인 PreferenceFragmentCompat 이가 있습니다.

관련 링크: https://developer.android.com/guide/topics/ui/settings?hl=ko

불러오는 중입니다...

https://developer.android.com/reference/androidx/preference/PreferenceFragmentCompat

 

PreferenceFragmentCompat  |  Android Developers

From class androidx.fragment.app.Fragment void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) Print the Fragments's state into the given stream. final boolean equals(Object o) Subclasses can not override equals(). final FragmentA

developer.android.com

 

구현방법

일단, AndroidX 아티팩트를 사용중이기 때문에, 관련 라이브러리로 추가하겠습니다.

implementation 'androidx.preference:preference:1.1.0-alpha01'

 

그 다음,  res/xml 폴더를 생성하여 preference.xml 파일을 생성하고, 아래와 같이 코드를 작성합니다.

<androidx.preference.PreferenceScreen
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <SwitchPreferenceCompat
        app:key="notifications"
        app:title="Enable message notifications"/>

    <Preference
        app:key="feedback"
        app:title="Send feedback"
        app:summary="Report technical issues or suggest new features"/>

</androidx.preference.PreferenceScreen>

 

저는 계층 구조 확장을 통해, 설정 화면을 좀 더 제 입맛대로 구성하도록 하겠습니다.

일단, PreferenceFragment 클래스를 생성합니다.

public class PreferenceFragment extends PreferenceFragmentCompat {
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
        setPreferencesFromResource(R.xml.preference, rootKey);
    }
}

setPreferencesFromResource에서 아까 만들어둔 preference xml을 넣어줍니다.

그리고 이를 임포트 시켜줄 PreferenceActivity를 생성합니다. xml 레이아웃은 마음대로 만들어 주세요. 단, 설정 화면이 들어갈 FrameLayout을 만들어 주시면 됩니다.

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ActivitySettingsBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_settings);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.frameLayout, new SettingsFragment())
                .commit();

    }

위 코드를 만들어둔 PreferenceActivity의 onCreate에 넣습니다.

 

완성!

저작자표시 비영리 동일조건 (새창열림)

'Android' 카테고리의 다른 글

Lottie 를 이용해 화려한 애니메이션 넣기  (0) 2019.09.20
RecyclerView 에서 Divider (구분선) 추가하기  (0) 2019.08.24
ViewPager 사용 시 양쪽 뷰 미리보기  (4) 2019.06.06
[News] 안드로이드, 64비트 지원 '필수'  (0) 2019.01.21
레이아웃 디자인에 도움이 되는 사이트  (0) 2018.12.22

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Lottie 를 이용해 화려한 애니메이션 넣기

    Lottie 를 이용해 화려한 애니메이션 넣기

    2019.09.20
  • RecyclerView 에서 Divider (구분선) 추가하기

    RecyclerView 에서 Divider (구분선) 추가하기

    2019.08.24
  • ViewPager 사용 시 양쪽 뷰 미리보기

    ViewPager 사용 시 양쪽 뷰 미리보기

    2019.06.06
  • [News] 안드로이드, 64비트 지원 '필수'

    [News] 안드로이드, 64비트 지원 '필수'

    2019.01.21
다른 글 더 둘러보기

정보

CodeJUN 블로그의 첫 페이지로 이동

CodeJUN

  • CodeJUN의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 방명록

카테고리

  • 분류 전체보기 (54)
    • Android (38)
    • BlockChain (4)
    • React Native (4)
    • 아두이노 (2)
    • 프로젝트 (6)

공지사항

  • 공지 - 블로그를 시작하며

태그

  • 안드로이드
  • c++
  • 강좌
  • 아두이노
  • arduino
  • Firebase
  • Android
  • C

나의 외부 링크

  • Github

정보

CODE_JUN의 CodeJUN

CodeJUN

CODE_JUN

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © CODE_JUN. Designed by Fraccino.

티스토리툴바