gpt4 book ai didi

android - 如何防止 actionMode 和工具栏在它们之间切换时变为 "jump"?

转载 作者:行者123 更新时间:2023-11-30 01:53:52 26 4
gpt4 key购买 nike

背景

我的应用程序中有一个 Activity ,它有一个工具栏作为 actionBar,它还有一个 actionMode,用于多选项目。

问题

每次关闭 actionMode 时,两种模式之间都会“跳转”一次,因此我可以同时看到工具栏和 actionMode。

也许我只是做错了,但我记得它在过去工作得很好。

这是使用我制作的代码 fragment 的样子:

enter image description here

我尝试过的

这是我使用过的代码 fragment 。要对其进行测试,请运行应用程序,等待 actionMode 出现,然后按返回按钮,或按 actionMode 上的按钮。请注意,我使用的所有类都属于支持库(如果可用)。

MainActivity.java

public class MainActivity extends AppCompatActivity {
protected ActionMode.Callback _actionModeCallback;
protected ActionMode _actionMode;
Toolbar _toolbar;

@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);
_actionModeCallback = new ActionMode.Callback() {
@Override
public boolean onPrepareActionMode(final ActionMode mode, final Menu menu) {
return false;
}

@Override
public void onDestroyActionMode(final ActionMode mode) {
_toolbar.setVisibility(View.VISIBLE);
_actionMode = null;
}

@Override
public boolean onCreateActionMode(final ActionMode mode, final Menu menu) {
_toolbar.setVisibility(View.GONE);
return true;
}

@Override
public boolean onActionItemClicked(final ActionMode mode, final MenuItem item) {
mode.finish();
return true;
}
};
//
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
_actionMode = startSupportActionMode(_actionModeCallback);
}
}, 2000);
}

}

activity_main.xml

<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"
tools:context=".MainActivity">

<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:colorControlNormal="?attr/colorControlNormal"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
tools:ignore="UnusedAttribute"/>

<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some Text"/>
</FrameLayout>
</LinearLayout>

styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
<!-- Customize your theme here. -->.
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="colorPrimary">#FF0288D1</item>
</style>

</resources>

问题

为什么会这样?我该如何解决?

这可能是一个已知错误吗?

最佳答案

您正在寻找的是 ACTION_MODE_OVERLAY 标志。在您的 Activity.onCreate() 方法中,在调用 super.onCreate() 之前添加以下内容:

@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);
super.onCreate(savedInstanceState);
// other stuff...
}

关于android - 如何防止 actionMode 和工具栏在它们之间切换时变为 "jump"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32575141/

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