CheckBoxPreference с собственным макетом

У меня есть PreferenceScreen с некоторыми PreferenceCheckBoxes. Я хочу изменить textColor и textSize для заголовка и резюме, а изображения для CheckBox отмечены и сняты. Поэтому я использую android: layout для изменения этих атрибутов.

My ChceckBoxPreference:

<CheckBoxPreference
    android:layout="@layout/preference_checkbox"
    android:key="temp"
    android:title="@string/title"
    android:summary="@string/summary"
    android:defaultValue="true" 
/>

Когда я использую android: widgetLayout , это выглядит странно. И это мой файл preference_checkbox.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_marginLeft="10dp"
>
<TextView 
    android:id="@+android:id/title"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/gray"
    android:textSize="20sp"     
    />
<TextView 
    android:id="@+android:id/summary"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/gray"
    android:textSize="14sp"
    />
</LinearLayout>
<CheckBox
    android:id="@+android:id/checkbox"
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:layout_alignParentRight="true"
    android:layout_marginRight="10dp"
/>  
</RelativeLayout>     

Заголовок с идентификатором @ + android: id / title и сводка с @ + android: id / summary показывают правильные значения. Однако, несмотря на значение по умолчанию и идентификатор @ + android: id / checkbox , флажок не работает должным образом. Он показывает неверное значение, и я не могу изменить значение, сохраненное в настройках. Без использования какого-либо макета я могу изменить значение флажка на ощупь на всем CheckBoxPreference. Но теперь (с моим макетом) я могу изменить значение флажка, только коснувшись этого флажка. Как правильно создать макет для CheckBoxPreference со всеми функциями?

12
задан woyaru 17 August 2011 в 14:32
поделиться