底部的Android关闭全屏视图被调离屏幕
我有一个屏幕,底部工具栏使用以下样式对齐底部的Android关闭全屏视图被调离屏幕,android,fullscreen,toolbar,Android,Fullscreen,Toolbar,我有一个屏幕,底部工具栏使用以下样式对齐 <style name="BottomToolbar" > <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:background">@color/WHI
<style name="BottomToolbar" >
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@color/WHITE</item>
<item name="android:layout_gravity">bottom</item>
<item name="android:layout_alignParentBottom">true</item>
<item name="android:minHeight">?attr/actionBarSize</item>
</style>
我使用以下代码退出全屏
getActivity().getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
编辑2-视图未从底部推出,其高度太小
看起来底部视图没有从屏幕底部移出,它的高度缩小了,并且比应该的要小
底部视图是一个线性布局,其高度设置为“包裹内容”,但由于其长度小于其内容,因此其内容的底部被截断,因此高度计算不正确
编辑3-设备上出现的问题
进一步调查显示,该问题仅出现在没有屏幕导航栏的设备上。例如,问题出现在我的三星10英寸平板电脑上,而不是Nexus 5x上。如果我删除以下标志,问题似乎已得到解决
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
此标志的Google文档是“当使用其他布局标志时,我们希望能够稳定地查看提供给fitSystemWindows(Rect)的内容插入。”
医生说
“您可能还需要使用SYSTEM_UI_FLAG_LAYOUT_STABLE来帮助您的应用程序保持稳定的布局。”()和
“最好包含其他系统UI标志(如系统UI标志布局隐藏导航和系统UI标志布局稳定),以防止在系统栏隐藏和显示时内容大小发生变化。”()我的问题:
onBackPressed()
方法并重新启动我的活动来解决此问题:
@Override
public void onBackPressed() {
startActivity(new Intent(getApplicationContext(), YourActivityHere.class));
}
这应该会重新创建活动。如果你可以申请,这是一个很好的黑客行为。我也遇到了同样的问题。我也在谷歌上搜索过,但没有找到解决方案。 我在onBackPressed()上应用了100毫秒延迟,因为我使用了SetSystemMivibility,但这需要时间 问题-Fragment在SetSystemMissibility之前调用,因为SetSystemMissibility需要时间,所以我们需要设置回按延迟
public static void hideToolbarFoProfile(Context mContext) {
Activity mActivity = (Activity) mContext;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = Objects.requireNonNull(mActivity).getWindow();
w.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
((MainActivity) Objects.requireNonNull(mActivity)).toolbar.setVisibility(View.GONE);
}
public static void showToolbarFoProfile(Context mContext) {
Activity mActivity = (Activity) mContext;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = Objects.requireNonNull(mActivity).getWindow();
w.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
w.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
((MainActivity) Objects.requireNonNull(mActivity)).toolbar.setVisibility(View.VISIBLE);
}
new Handler().postDelayed(() -> {
Objects.requireNonNull(getActivity()).onBackPressed();
}, 100);
你能添加一些代码(切换到全屏模式并返回)吗?我已经用我用来进入/退出全屏的代码更新了原始帖子
public static void hideToolbarFoProfile(Context mContext) {
Activity mActivity = (Activity) mContext;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = Objects.requireNonNull(mActivity).getWindow();
w.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
((MainActivity) Objects.requireNonNull(mActivity)).toolbar.setVisibility(View.GONE);
}
public static void showToolbarFoProfile(Context mContext) {
Activity mActivity = (Activity) mContext;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window w = Objects.requireNonNull(mActivity).getWindow();
w.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
w.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
}
((MainActivity) Objects.requireNonNull(mActivity)).toolbar.setVisibility(View.VISIBLE);
}
new Handler().postDelayed(() -> {
Objects.requireNonNull(getActivity()).onBackPressed();
}, 100);