2014-11-03 2 views
5

appcompat v7에 SwitchCompatPreference이 누락되어 있으므로 직접 만들어야하는 것 같습니다.자신의 SwitchCompat 환경 설정 만들기

어떻게 달성 할 수 있습니까? 나는 조금 googled하고 DialogPreference에 대한 튜토리얼을 발견. 나는 SwitchCompatPreference에 그것을 채택하려했지만 내 XML 레이아웃에서는 항상이 클래스가 환경 설정 XML에서 허용되지 않는다고 말합니다.

무엇을해야합니까?

+0

나는 나의 대답을 편집했다. 수정 된 답변을 사용하십시오. – jyoon

답변

24

새 구성 요소를 만들 필요가 없습니다.

먼저 낮은 API를 지원하려면 SwitchPreference 대신 CheckBoxPreference을 사용해야합니다.

기존 android.support.v7.widget.SwitchCompat 위젯을 사용하여 l_switch.xml과 같은 새 레이아웃 파일을 만듭니다. 다음 코드를 사용합니다

android:widgetLayout="@layout/l_switch" 

이 강제로, 직접 CheckBoxPreference에, 당신의 SwitchPreference PreferenceFragment에서CheckBoxPreference에, 그리고

yourSwitch = findPreference("key_for_this_component"); 
yourSwitch.setWidgetLayoutResource(R.layout.l_switch); 

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.SwitchCompat xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/checkbox" <!-- IMPORTANT --> 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@null" 
    android:clickable="false" <!-- IMPORTANT --> 
    android:focusable="false" <!-- IMPORTANT --> 
    android:gravity="center" /> 

를하거나 CheckBoxPreference는 SwitchCompat 스타일을 사용합니다.

+0

이 코드를 사용하고 있으며 새로운 SwitchCompat 위젯을 표시하지만 환경 설정은 실제로 유지되지 않습니다. 프로젝트에서 이것이 실제로 환경 설정 변경 사항을 유지하고 있는지 확실합니까? – JDJ

+2

나는 동일한 문제가있다. 수정 사항을 찾아서이 게시물을 업데이트합니다. – jyoon

+0

이 작동하지만 스위치 토글 애니메이션이 손실됩니다. 나는 그들이 가까운 장래에 SwitchCompatPreference를 생성하기를 정말로 바란다. – JDJ