【问题标题】:Styling ActionMode ActionBar in Android 5.0 Lollipop (with AppCompat)Android 5.0 Lollipop 中的 ActionMode ActionBar 样式(带有 AppCompat)
【发布时间】:2015-01-15 13:26:21
【问题描述】:

我使用本教程为 Lollipop 改造了我的 Holo 应用程序: http://android-developers.blogspot.ru/2014/10/appcompat-v21-material-design-for-pre.html

我有什么:

  1. 主题

    <style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
      <item name="windowActionModeOverlay">true</item>
      <item name="colorPrimary">@color/theme_primary</item>
      <item name="colorPrimaryDark">@color/theme_primary_dark</item>
      <item name="colorAccent">@color/theme_accent</item>
    </style>
    
  2. 工具栏布局

    <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      android:id="@+id/toolbar"
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:minHeight="?attr/actionBarSize"
      android:background="?attr/colorPrimary"
      app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    
  3. 多选模式下继承自ActionBarActivity的带有ListFragment片段的Activity

    getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

结果:工具栏正常。它使用指定的主题颜色,但 ActionMode 中 ListFragment 使用的 ActionBar(通过长按列表项激活)具有标准的 Dark.ActionBar 颜色。操作栏的弹出菜单也使用了深色主题。

我尝试了所有的 SO 技巧,但仍然无法解决。我将不胜感激。

顺便说一句。我发现ActionBar的颜色较深是由工具栏的app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"引起的,但不知道如何解决,因为正确的工具栏外观需要这个属性。

【问题讨论】:

    标签: android android-actionbar android-5.0-lollipop android-appcompat material-design


    【解决方案1】:

    只需将这两行添加到主题中:

    <item name="actionModeBackground">@color/theme_primary_dark</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
    

    【讨论】:

    • 在这个问题上花了很多时间之后,这确实有效。谢谢!
    • 浪费了很多时间试图让它工作,只是意识到,为了让它在 AppCompat 的工具栏中工作,你必须删除 "android:" 项目名称的一部分。希望这可以帮助任何其他阅读此主题的人:)
    • 谢谢!状态栏颜色呢?当actionmode 显示时它变白了?
    【解决方案2】:

    如果您想更好地控制每种颜色,除了@Andrey Shcherbakov 的回答之外,这也可能会有所帮助。

    <!-- action bar title text color, icon color (ie: back icon, icons when editing text)-->
    <item name="android:textColorPrimary">#FFFF00</item>
    
    <!-- action bar background color-->
    <item name="android:colorBackground">#444400</item>
    
    <!-- color of line under contextual action bar-->
    <item name="colorControlActivated">#00CC00</item>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多