5

appcompat v7 には a がないので、SwitchCompatPreference自分で作成する必要があるようです。

これはどのように達成できますか?私は少しグーグルで、のチュートリアルを見つけましたDialogPreference。私はそれを採用しようとしましたSwitchCompatPreferenceが、私のxmlレイアウトでは、このクラスは設定xmlでは許可されていないと常に言われています。

私は何をする必要がありますか?

4

1 に答える 1

24

新しいコンポーネントを作成する必要はありません。

まず、CheckBoxPreference下位の API をサポートするために、SwitchPreference の代わりに使用する必要があります。

既存のandroid.support.v7.widget.SwitchCompatウィジェットを使用して、新しいレイアウト ファイルを作成しますl_switch.xml。次のコードを使用します。

<?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" />

次に、のSwitchPreference CheckBoxPreferencePreferenceFragment

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

または、CheckBoxPreference に直接、

android:widgetLayout="@layout/l_switch"

これにより、CheckBoxPreference がSwitchCompatスタイルを使用するようになります。

于 2014-11-13T10:58:00.920 に答える