gpt4 book ai didi

android - 如何为操作项的弹出窗口设置自定义颜色,包括溢出菜单?

转载 作者:可可西里 更新时间:2023-10-31 22:04:09 27 4
gpt4 key购买 nike

背景

我正在为应用程序添加一些 Material 设计风格,因此我为操作栏和状态栏选择了不同的颜色。

问题

为此,应用程序的主题是“Theme.AppCompat.Light.DarkActionBar”,并添加它来隐藏操作栏,因为我需要将其作为工具栏处理:

我用过的主题:

<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowActionModeOverlay">true</item>
</style>

我用过的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<android.support.v7.widget.Toolbar
android:id="@+id/activity_app_list__toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
tools:ignore="UnusedAttribute"/>
</LinearLayout>

代码:

  @Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_toolbar=(Toolbar)findViewById(R.id.activity_app_list__toolbar);
setSupportActionBar(_toolbar);
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.menu_main,menu);
return super.onCreateOptionsMenu(menu);
}

出于某种原因,我得到了这种行为:

  1. 操作项和溢出项的子菜单是黑色的。
  2. 当点击搜索操作项时,那里的溢出项是白色的。

我想自定义那些弹出菜单,以便它们保持一致。

我尝试过的

我试过用这个:

<item name="actionOverflowMenuStyle">@style/OverflowMenu</item>

...
<style name="OverflowMenu" parent="Widget.AppCompat.Light.PopupMenu.Overflow">
</style>

但是一点用都没有。

问题

有人知道怎么处理吗?这是支持库中的错误吗?

对我来说它看起来是这样的,所以我已经报告了它 here ,包括示例项目。

最佳答案

您可以使用 popupTheme 属性自定义溢出菜单:

<android.support.v7.widget.Toolbar
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="@dimen/triple_height_toolbar"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

原始答案缺少一些要点:

首先,工具栏应该有:

  <android.support.v7.widget.Toolbar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"/>

对于光弹出,使用这个:

  <style name="AppTheme.Light" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarTheme">@style/AppTheme.ActionBarTheme.Light</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>

<style name="AppTheme.ActionBarTheme.Light" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="colorControlActivated">#FFffffff</item>
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>

对于深色弹出窗口,使用这个:

  <style name="AppTheme.Light" parent="@style/Theme.AppCompat.NoActionBar">
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Dark</item>
<item name="actionBarTheme">@style/AppTheme.ActionBarTheme.Dark</item>
</style>

<style name="AppTheme.ActionBarTheme.Dark" parent="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<item name="colorControlActivated">#FFffffff</item>
<item name="android:textColorPrimary">#FFffffff</item>
</style>

关于android - 如何为操作项的弹出窗口设置自定义颜色,包括溢出菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30148070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com