Nic*_*las 5 android android-actionbar android-actionmode
目前,操作模式工具栏显示在工具栏上方,将整个布局向下移动,我希望它显示在当前工具栏的顶部。我在这篇文章和这篇文章中尝试了所有解决方案:
windowActionModeOverlay和不使用android:前缀,没有成功view.ActionMode和support.v7.view.ActionMode,没有成功setContentView之前被调用super.onCreate,这不是问题现在我只是手动设置工具栏可见性,这看起来很糟糕。另外我之前设置了活动主题super.onCreate,这可能是问题吗?如果不是,那是什么?我怎样才能使属性起作用?
我的活动:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的主题:
<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>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了所有组合,发现您正在使用values-v21文件夹来定义棒棒糖及以上设备的样式,而您忘记<item name="windowActionModeOverlay">true</item>在values-v21文件夹中添加style.xml 。
为了确保您遵循正确的路径,我刚刚在Github上发布了一个示例项目,展示了如何在自定义工具栏的顶部显示 ActionBar。
您也可以下载示例APK并试用。
回答您在问题中发布的所有问题
我尝试使用带有和不带有 android: 前缀的 windowActionModeOverlay,但没有成功
您不必使用 android 前缀。windowActionModeOverlay 有效。
<item name="windowActionModeOverlay">true</item>
Run Code Online (Sandbox Code Playgroud)
我尝试了view.ActionMode和support.v7.view.ActionMode,没有成功
这是必需的,因为您正在尝试使用具有单独的 Action Bar 命名空间的支持库 import android.support.v7.view.ActionMode;
我尝试在我的工具栏和我的活动中使用 startActionMode,但都没有奏效。
它以两种方式工作。如果您想查看示例,可以在 github 存储库中查看。
setContentView 在 super.onCreate 之前被调用,这不是问题
这不是问题。它会起作用。
| 归档时间: |
|
| 查看次数: |
1639 次 |
| 最近记录: |