59

で個人設定を作成することは可能PreferenceScreenですか?

次のような色設定をコーディングしたいと思います。

色の好み

色の選択は で簡単に実現できることは知っていListPreferenceますが、そのような「チェックボックス」を使用すると素晴らしいでしょう。

4

5 に答える 5

92

Android 開発者ページには、DialogFragment. Preferenceただし、アイテムの外観をカスタマイズすることは引き続き可能です。XML では、ルート要素を として宣言しandroid:id="@android:id/widget_frame、次に andとして宣言する必要があります。次に、レイアウトに表示する他の要素を宣言できます。マルチチェックボックスのカラーチューザーに簡単に適応できる例を次に示します。TextViewandroid:titleandroid:summarySeekBar

seekbar_preference.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/widget_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@android:id/title"
        style="@android:style/TextAppearance.DeviceDefault.SearchResult.Title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title" />

    <TextView
        android:id="@android:id/summary"
        style="@android:style/TextAppearance.DeviceDefault.SearchResult.Subtitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Summary" />

    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

次に、 から派生したクラスで、メソッドPreferenceをオーバーライドします。onCreateView()

SeekbarPreference.java

@Override
protected View onCreateView( ViewGroup parent )
{
  LayoutInflater li = (LayoutInflater)getContext().getSystemService( Context.LAYOUT_INFLATER_SERVICE );
  return li.inflate( R.layout.seekbar_preference, parent, false);
}

次に、preferences.xml ファイルで設定を使用します。

設定.xml

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

    <com.example.SeekbarPreference
        android:key="pref_max_volume"
        android:title="@string/max_volume" />
    <com.example.SeekbarPreference
        android:key="pref_balance"
        android:title="@string/balance" />

</PreferenceScreen>

これにより、次のようなプリファレンスが得られます。

シークバー設定項目

元の質問のように、この方法を簡単に適応させて、行に複数のチェックボックスを表示できます。

于 2014-07-16T13:11:05.453 に答える
8

ビューとアクションを定義することにより、カスタム設定を作成することは、フラグメントまたは他の UI コンポーネントを作成することに似ています。

Android 開発者には、カスタム設定を作成するためのセクションを含む、設定の作成に関する優れたガイドがあります: http://developer.android.com/guide/topics/ui/settings.html#Custom

于 2013-04-19T16:15:40.127 に答える
5

好みのカスタム レイアウトを作成し、次のandroid:layoutように res/xml の Preference の属性に設定できます。

<Preference
    ......................
    android:layout="@layout/your_layout" />

または、設定の代わりにアクティビティを使用できます

于 2013-04-19T16:31:14.393 に答える
0

または、DialogPreference クラスを拡張することをお勧めします。カラー ピッカー ウィジェットをダイアログ ビューとして設定し、拡張設定自体で肯定的な結果を得ることができます。これは同様の質問ですが、シナリオには非常に役立ちます

于 2013-11-12T14:03:52.603 に答える