android-actionbar - 无论如何,安卓不能在工具栏上显示 actionMode

  显示原文与译文双语对照的内容
83 1

当前的动作模式工具栏显示工具栏上方,移动整个布局,我希望它显示在我当前的工具栏上。我尝试了在这个帖子中所有的解决方案,这篇文章和 ,这一个:

  • 我尝试使用 windowActionModeOverlay 和不带 android: 前缀的,没有成功
  • 我尝试了 view.ActionModesupport.v7.view.ActionMode 没有成功
  • 我尝试在工具栏和我的Activity 上都使用 startActionMode,但两者都没有。
  • super.onCreate 之前调用 setContentView,这不是问题

现在我只是手动设置工具栏可见性,这看起来很糟糕。我还在 super.onCreate 之前设置了 Activity 主题,可以是这个问题?如果不是的话?如何使属性工作?

我的Activity:

import android.support.v7.view.ActionMode;
import android.support.v7.widget.Toolbar;
//import.. .
public class FileExplorerActivity extends AppCompatActivity {
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 setTheme(R.style.Theme_NoActionBar);
 super.onCreate(savedInstanceState);
 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
 setSupportActionBar(toolbar);
//...
 }
 private void setActionMode(boolean enabled) {
 if (enabled) {
 actionMode = startSupportActionMode(new ActionMode.Callback() {
 @Override
 public boolean onCreateActionMode(ActionMode mode, Menu menu) {
 MenuInflater inflater = mode.getMenuInflater();
 inflater.inflate(R.menu.cab, menu);
 return true;
 }
 @Override
 public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
//... change icons color for theme
 return false;
 }
 @Override
 public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//... handle item clicks
 return true;
 }
 @Override
 public void onDestroyActionMode(ActionMode mode) {}
 });
 } else {
 actionMode.finish();
 }
 }
}

我的主题是

<style name="Theme.NoActionBar" parent="Theme.AppCompat.NoActionBar">
 <item name="android:actionModeBackground">?attr/colorPrimary</item>
 <item name="android:actionModeSplitBackground">@null</item>
 <item name="android:windowActionModeOverlay">true</item>
 <item name="windowActionModeOverlay">true</item>
</style>
时间:原作者:0个回答

96 3

我尝试了所有的组合,发现你使用了 values-v21 文件夹为 Lollipop 和上设备定义样式,你忘记添加<item name="windowActionModeOverlay">true</item>在 styles.xml 中,以英镑为单位的文件夹。

为了确保你正在遵循正确的路径,我刚刚发布了一个 on上的示例项目。

你还可以下载示例 并尝试它。

回答你在问题中张贴的所有问题

我尝试了使用windowActionModeOverlay和没有 android:前缀,没有成功

你不需要使用android前缀。windowActionModeOverlay是有效的。

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

我尝试了 view.ActionMode 和 support.v7. 视图 actionmode,没有成功

当你试图使用具有单独操作栏命名空间的支持库时,这是必需import android.support.v7.view.ActionMode;

我尝试在工具栏和我的Activity 上都使用 startActionMode,但两者都没有。

这两种方法都适用。如果你想查看示例,你可以在 github repo 中看到它。

setContentView在 super 。oncreate之前被调用,这不是问题

这不是问题,会有用的。

原作者:
...