gpt4 book ai didi

android - 无法以任何方式在工具栏顶部显示 actionMode

转载 作者:行者123 更新时间:2023-11-29 01:13:12 24 4
gpt4 key购买 nike

目前,操作模式工具栏显示在工具栏上方,将整个布局向下移动,我希望它显示在我当前工具栏的顶部。我尝试了 this post 中的所有解决方案和 this one :

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

现在我只是手动设置工具栏可见性,这看起来很糟糕。另外我在 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>

最佳答案

我已经尝试了所有组合,发现您正在使用 values-v21 文件夹来定义 Lollipop 及以上设备的样式,而您忘记添加 <item name="windowActionModeOverlay">true</item>values-v21 文件夹中的 styles.xml 中。

为了确保您遵循正确的路径,我刚刚在 Github 上发布了一个示例项目显示如何在自定义工具栏的顶部显示 ActionBar。

您还可以下载示例 APK并尝试一下。

回答您在问题中发布的所有问题

I tried using windowActionModeOverlay with and without android: prefix, no success

您不必使用 android 前缀。 windowActionModeOverlay 有效。

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

I tried both view.ActionMode and support.v7.view.ActionMode, no success

这是必需的,因为您正在尝试使用具有单独操作栏命名空间的支持库 import android.support.v7.view.ActionMode;

I tried using startActionMode both on my toolbar and my activity, neither worked.

它以两种方式工作。如果您想查看示例,可以在 github 存储库中查看。

setContentView is called before super.onCreate, this is not the problem

这不是问题。它会起作用。

关于android - 无法以任何方式在工具栏顶部显示 actionMode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41603397/

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