嵌套首选项活动

时间:2016-11-01 11:58:49

标签: android android-support-library android-toolbar android-theme preferenceactivity

当我第一次开始查看这个问题时,我发现了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>

enter image description here

enter image description here

我尝试为工具栏创建一个特殊主题(同样来自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上的哪一个。我找到的答案并不奏效。

1 个答案:

答案 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>