6

次の PreferenceScreen を使用するandroid.support.v4.preference.PreferenceFragmentがあります。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
    android:title="Cat1"
    android:key="pref_cat1">
    <ListPreference
        android:key="pref_list1"
        android:title="@string/pref_list1"
        android:dialogTitle="@string/pref_list1"
        android:entries="@array/pref_list1_entries"
        android:entryValues="@array/pref_list1_entries"
        android:defaultValue="@string/pref_list1_default"/>
    <EditTextPreference
        android:key="pref_text2"
        android:title="@string/pref_text2"
        />
</PreferenceCategory>
<PreferenceCategory
    android:title="Cat2"
    android:key="pref_cat2">
    <EditTextPreference
        android:key="pref_text3"
        android:title="@string/pref_text3"
        />
</PreferenceCategory>

PreferenceFragment を表示すると、設定の間にいくつかの仕切りが表示されますが、各 PreferenceCategory の名前の下にも表示されます。PreferenceFragment の ListView にアクセスすることで、設定間の仕切りの色を簡単に変更できますが、これは PreferenceCategory 仕切りには影響しません。

そのような仕切りの色も変更するにはどうすればよいですか?

4

3 に答える 3

5

次の 2 つのオプションがあります。

  1. listSeparatorTextViewStyleアプリのテーマで を定義します

このテーマ属性に依存する他のものも、定義したスタイルを使用するように変更されることに注意してください。問題がなければ、次のようになります。

<style name="AppTheme" parent="android:...">
    ...
    <item name="android:listSeparatorTextViewStyle">@style/ListSeparatorText</item>
</style>

<style name="ListSeparatorText" parent="android:Widget.TextView"><!--parent is optional -->
    <item name="android:background">...</item>
    ...
</style>
  1. PreferenceCategories のカスタム レイアウトを定義する

a のデフォルトのレイアウトPreferenceCategoryは単なる TextView です。android:id="@android:id/title"レイアウトは好きなだけ単純にすることも複雑にすることもできますが、タイトルが自動的にバインドされるように、どこかに TextView を配置する必要があります。

レイアウトを作成android:layoutしたら、設定 xml で属性を使用します。

<PreferenceCategory
    android:title="Cat2"
    android:key="pref_cat2"
    android:layout="@layout/my_pref_category">
    ...
</PreferenceCategory>

または、アプリのテーマでを定義することもできます。preferenceCategoryStyleこの場合android:layout、設定 xml で を使用する必要はまったくありません。

<style name="AppTheme" parent="android:...">
    ...
    <item name="android:preferenceCategoryStyle">@style/PreferenceCategoryStyle</item>
</style>

<style name="PreferenceCategoryStyle" parent="android:Preference.Category">
    <item name="android:layout">@layout/my_pref_category</item>
    ...
</style>
于 2015-07-14T23:14:19.563 に答える
1

コードで仕切りのカスタム ドローアブルを設定することもできるようになりました。古いバージョンのサポート ライブラリについてはわかりませんが、少なくとも AndroidX では動作します。

あなたPreferenceFragmentCompatは追加することができます:

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    setDivider(getResources().getDrawable(R.drawable.your_divider_drawable, requireActivity().getTheme()));
}

setDivider(null)また、セパレーターを削除するために呼び出すこともできます。

于 2019-12-11T13:44:24.533 に答える