选择偏好的颜色
selecting the color of preferences
正在设置主题,但只要设置了颜色,文本颜色就不会根据动态设置的首选项发生变化。
<style name="PreferenceScreen" parent="AppTheme">
<item name="android:color">@android:color/black</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:textColorSecondary">@android:color/black</item>
<item name="android:textColorTertiary">@android:color/black</item>
</style>
这是添加首选项的方式:
Vector<String> categories = getCategories();
//Add all the categories to the preference
PreferenceCategory cat = (PreferenceCategory) findPreference("category_key");
for (final String categoryTitle : categories){
final Preference pref = new Preference(getActivity().getApplicationContext());
pref.setTitle(categoryTitle);
pref.setWidgetLayoutResource(R.layout.list_black_text);
cat.addPreference(pref);
}
使用 pref.setLayoutResource(R.layout.list_item)
而不是 pref.setWidgetLayoutResource()
。
你可以在上面提到的layout/list_item.xml
中定义颜色和样式,应该是这样的:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:clipToPadding="false"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<TextView android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
/>
<TextView android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignLeft="@android:id/title"
android:maxLines="10" />
</RelativeLayout>
<LinearLayout android:id="@+android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="end|center_vertical"
android:paddingLeft="16dp"
/>
</LinearLayout>
@+android:id/title
将填写您的标题;
@+android:id/summary
加上你的总结;
@+android:id/widget_frame
与您使用 pref.setWidgetLayoutResource()
设置的任何内容(可能是 CheckBox
,或 Switch
,或其他)。
只需添加 XML 属性即可根据需要更改文本颜色。
正在设置主题,但只要设置了颜色,文本颜色就不会根据动态设置的首选项发生变化。
<style name="PreferenceScreen" parent="AppTheme">
<item name="android:color">@android:color/black</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:textColorSecondary">@android:color/black</item>
<item name="android:textColorTertiary">@android:color/black</item>
</style>
这是添加首选项的方式:
Vector<String> categories = getCategories();
//Add all the categories to the preference
PreferenceCategory cat = (PreferenceCategory) findPreference("category_key");
for (final String categoryTitle : categories){
final Preference pref = new Preference(getActivity().getApplicationContext());
pref.setTitle(categoryTitle);
pref.setWidgetLayoutResource(R.layout.list_black_text);
cat.addPreference(pref);
}
使用 pref.setLayoutResource(R.layout.list_item)
而不是 pref.setWidgetLayoutResource()
。
你可以在上面提到的layout/list_item.xml
中定义颜色和样式,应该是这样的:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:clipToPadding="false"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingTop="16dp"
android:paddingBottom="16dp">
<TextView android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
/>
<TextView android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignLeft="@android:id/title"
android:maxLines="10" />
</RelativeLayout>
<LinearLayout android:id="@+android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="end|center_vertical"
android:paddingLeft="16dp"
/>
</LinearLayout>
@+android:id/title
将填写您的标题;@+android:id/summary
加上你的总结;@+android:id/widget_frame
与您使用pref.setWidgetLayoutResource()
设置的任何内容(可能是CheckBox
,或Switch
,或其他)。
只需添加 XML 属性即可根据需要更改文本颜色。