【问题标题】:Contextual action bar does not overlay my toolbar上下文操作栏不会覆盖我的工具栏
【发布时间】:2015-11-17 11:34:55
【问题描述】:

我创建了一个活动并将工具栏设置为我放置在底部的操作栏。

在该活动中,我有一个包含一些数据的列表视图。

问题是,当我长按列表项时,上下文操作栏出现在顶部,而不是覆盖位于底部的工具栏。

我的活动主题

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Base application theme. -->
<style name="myActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="android:windowActionModeOverlay">true</item>
</style>

我的工具栏

<android.support.v7.widget.Toolbar
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:id="@+id/toorbar"
    android:background="@android:color/white"
    android:layout_gravity="bottom">
</android.support.v7.widget.Toolbar>

我的活动

protected void onCreate(Bundle savedInstanceState){
    ToolBar toolbar =(ToolBar) findViewById(R.id.toolbar)
    setSupportActionBar(toolbar)
}

我应该怎么做才能让 CAB 覆盖我的工具栏?

编辑

这是我班级中处理长点击的onCreateActionMode 方法

private class Selector implements AbsListView.MultiChoiceModeListener{

    @Override
    public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
        mode.getMenuInflater().inflate(R.menu.my_activity_menu,menu);
        toolbar.setVisibility(View.VISIBLE);
        return true;
    }

【问题讨论】:

  • 为什么你使用toolbar.setVisibility(View.VISIBLE)在onCreateActionMode中显示工具栏; ??
  • 你需要删除那一行
  • @RajeshJadav 我只希望工具栏(现在是我的操作栏)在长按列表项时可见。然后我在采取行动时将其设置为INVISIBLE
  • 其实你不需要这样做。当您使用 windowActionModeOverlay 为 true 时。结构性操作栏替换了工具栏,但您在 onCreateActionMode 中显示工具栏,这不是必需的。当您单击连接操作栏中的完成按钮时,工具栏会自动替换连接操作栏
  • @RajeshJadav 我不知道为什么这个 CAB 仍然认为我在顶部有一个操作栏!想象一下,即使删除了toolbar.setVisibliity 行。它仍然显示在我的活动顶部

标签: android android-listview android-actionbar android-toolbar


【解决方案1】:

如果您希望上下文 ActionBarToolbar 重叠,请使用此

<item name="windowActionModeOverlay">true</item>

而不是

<item name="android:windowActionModeOverlay">true</item>

【讨论】:

  • 我已经尝试删除android namespace,但它仍然出现在顶部,而不是在底部覆盖我的工具栏
  • 您的编辑正是我在我的问题中使用的,但仍然出现问题
  • no 父主题在编辑中有所不同。它是 Theme.AppCompat.NoActionBar 而不是 Theme.AppCompat.Light.NoActionBar 并且还需要删除 false
  • 请通过扩展 AppCompatActivity 而不是 ActionBarActivity 进行检查
  • 它解决了我的问题,我将 android:windowActionModeOverlay 删除到 windowActionModeOverlay ,非常感谢
【解决方案2】:

这对我有用,

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

            <item name="windowNoTitle">true</item>
            <item name="windowActionBar">false</item>
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
            <item name="windowActionModeOverlay">true</item>

     </style>

【讨论】:

    【解决方案3】:

    你可以试试这个主题,这可能会解决你的问题。

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

    【讨论】:

    • 这并不能解决问题。它只会更改 CAB 的主题/样式,但不会将其移动到我的工具栏所在的底部
    【解决方案4】:
    <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/color_primary</item>
            <item name="colorPrimaryDark">@color/color_primary_dark</item>
            <item name="colorAccent">@color/color_accent</item>
    
            <item name="alertDialogTheme">@style/AppCompatAlertDialogStyle</item>
    
            <!-- required for toolbar in prelolipop -->
            <item name="android:windowNoTitle">true</item>
            **<item name="windowActionModeOverlay">true</item>**
    
        </style>
    

    使用&lt;item name="windowActionModeOverlay&gt;true&lt;/item&gt; 用于上下文操作栏以覆盖工具栏。如果您使用过,请删除 &lt;item name="windowActionBar"&gt;false&lt;/item&gt;。它对我有用。

    【讨论】:

      【解决方案5】:

      由于我的工具栏位于活动的底部,因此解决方案是制作我自己的上下文操作栏来覆盖它。

      下面的这个项目给了我一个良好的开端。

      https://github.com/afollestad/material-cab

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-30
        相关资源
        最近更新 更多