Android 5.0 Lollipop 中的 ActionMode ActionBar 样式(带有 AppCompat)
Posted
技术标签:
【中文标题】Android 5.0 Lollipop 中的 ActionMode ActionBar 样式(带有 AppCompat)【英文标题】:Styling ActionMode ActionBar in Android 5.0 Lollipop (with AppCompat) 【发布时间】:2015-01-15 13:26:21 【问题描述】:我使用本教程为 Lollipop 改造了我的 Holo 应用程序: http://android-developers.blogspot.ru/2014/10/appcompat-v21-material-design-for-pre.html
我有什么:
主题
<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>
工具栏布局
<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_
android:layout_
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
多选模式下继承自ActionBarActivity的带有ListFragment片段的Activity
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
结果:工具栏正常。它使用指定的主题颜色,但 ActionMode 中 ListFragment 使用的 ActionBar(通过长按列表项激活)具有标准的 Dark.ActionBar 颜色。操作栏的弹出菜单也使用了深色主题。
我尝试了所有的 SO 技巧,但仍然无法解决。我将不胜感激。
顺便说一句。我发现ActionBar的颜色较深是由工具栏的app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
引起的,但不知道如何解决,因为正确的工具栏外观需要这个属性。
【问题讨论】:
【参考方案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>
【讨论】:
以上是关于Android 5.0 Lollipop 中的 ActionMode ActionBar 样式(带有 AppCompat)的主要内容,如果未能解决你的问题,请参考以下文章
HttpClient 在 Android 5.0 Lollipop 中因握手失败而失败
4.4 kitkat 中的 NoClassDefFoundError 但不在 5.0 Lollipop 中 - 找不到类
Android 5.0 Lollipop 上的 UnsatisfiedLinkError