当我第一次开始查看这个问题时,我发现了this个问题,但答案并不适用于我。我正在使用 KitKat 手机,但根据我的阅读,这可以在使用AppCompat
库的pre-lollipop版本上完成。我正在使用this GitHub repo,以及更具体的this代码示例来创建嵌套首选项屏幕。
以下是代码示例中AppTheme.SettingsTheme
的{{1}}:
SettingActivity
这一行:<style name="AppTheme.SettingsTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="titleTextStyle">@android:color/white</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorControlNormal">#fff</item>
</style>
将<item name="colorControlNormal">#fff</item>
从白色文本和黑色后退箭头更改为同时包含文本和后退箭头出现白色(这很好)。
问题是我有Toolbar
也有这条线的颜色,所以当它没有检查时,我几乎看不到它(盒颜色白色)。 / p>
我尝试为工具栏创建一个特殊主题(同样来自this回答)并执行CheckBoxPreference
,但它只是不会影响工具栏。
我还试图单独为<item name="colorControlNormal">COLOR</item>
着色,但似乎涉及为它创建自定义布局,这会带来更多的工作。
这是我的工具栏布局,目前没有特定的主题:
CheckBoxPreference
有人可以解释如何分别对<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".ui.activities.settingsActivity.SettingsActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?colorPrimary"
android:minHeight="?actionBarSize"
app:navigationContentDescription="@string/abc_action_bar_up_description"
app:navigationIcon="?homeAsUpIndicator"
app:title="@string/activity_settings_title"
app:titleTextColor="@android:color/white" />
</android.support.design.widget.AppBarLayout>
和CheckBoxPreference
进行着色吗?我不关心我使用Toolbar
中的哪一个着色以及我在其自定义ActivityTheme
上的哪一个。我找到的答案并不奏效。
答案 0 :(得分:1)
专门为Toolbar
使用主题,而不是整个Activity
。这就是ThemeOverlay
样式的含义(必要时使用colorControlNormal
属性)。您还可以定义一个单独的&#34;弹出窗口&#34;主题,如果你想要从你的黑暗Toolbar
:
<style name="SettingsTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="SettingsTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="SettingsTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
然后您可以在布局中应用这些样式:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.AppBarLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/SettingsTheme.AppBarOverlay"
tools:context=".ui.activities.settingsActivity.SettingsActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?colorPrimary"
android:minHeight="?actionBarSize"
app:navigationContentDescription="@string/abc_action_bar_up_description"
app:navigationIcon="?homeAsUpIndicator"
app:title="@string/activity_settings_title"
app:popupTheme="@style/SettingsTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>