Mic*_*Bak 9 android android-theme
我正在使用Material主题,我想更改下图中两个标记区域的颜色 - 即高亮颜色(#1)和细节片段中标题的颜色(#2).
我知道主题中每个地方的颜色都有一个属性,但我似乎无法找到它.

有任何想法吗?
adn*_*eal 23
我知道主题中每个地方的颜色都有一个属性,但我似乎无法找到它.
你想要的属性是activatedBackgroundIndicator.
按照文档
Drawable用作激活项目的背景.
理由是
用于a中每个标题项的布局PreferenceActivity是preference_header_item_material使用activatedBackgroundIndicator背景作为背景.你需要一个这个属性的选择器,如:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true"><color android:color="yourColor" />
</item>
<item><color android:color="@android:color/transparent" />
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
这个项目有点棘手.这不是PreferenceScreen你在另一个答案中建议的,而是FragmentBreadCrumbs标题.遗憾的是,无法使用主题设置标题颜色,因为用于设置样式的属性是私有内部.
但是,您可以使用Reflection设置文本颜色,或者只是遍历面包屑的视图层次结构,直到找到TextView用于显示标题的内容.
用于显示每个内容的布局PreferenceActivity是preference_list_content_material其中包括breadcrumbs_in_fragment_material布局显示每个面包屑.您可以从该布局中看到每个的ID FragmentBreadCrums都是android:id/title.现在我们可以使用此id来查找breadcrumb并调整其TextView内部.
使用反射
@Override
public void onBuildHeaders(List<Header> target) {
super.onBuildHeaders(target);
loadHeadersFromResource(R.xml.yourPreferenceHeaders, target);
final View breadcrumb = findViewById(android.R.id.title);
if (breadcrumb == null) {
// Single pane layout
return;
}
try {
final Field titleColor = breadcrumb.getClass().getDeclaredField("mTextColor");
titleColor.setAccessible(true);
titleColor.setInt(breadcrumb, yourTitleColor);
} catch (final Exception ignored) {
// Nothing to do
}
}
Run Code Online (Sandbox Code Playgroud)
遍历视图层次结构
使用View.findViewsWithText是一种简单的方法来处理这个问题.
breadcrumb.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
breadcrumb.getViewTreeObserver().removeOnGlobalLayoutListener(this);
final ArrayList<View> outViews = Lists.newArrayList();
breadcrumb.findViewsWithText(outViews, getString(R.string.your_header_title),
View.FIND_VIEWS_WITH_TEXT);
((TextView) outViews.get(0)).setTextColor(yourTitleColor);
}
});
Run Code Online (Sandbox Code Playgroud)
