阻止在Android中调整布局大小

发布时间:2022-09-18 / 作者:清心寡欲
本文介绍了阻止在android中调整布局大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Playerview并尝试显示/隐藏系统栏,但当它们隐藏或显示时,整个屏幕会上下移动。我理解这是因为每次隐藏/显示条时,屏幕都会调整大小。我希望布局停止调整大小,这样屏幕就不会移动。以下代码在横向模式下运行良好,但仅在纵向模式下出现问题。

private boolean hasfocused;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

        setContentView(R.layout.activity_player_layout);

                         //


 @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
          getSupportActionBar().show();
          playerView.showController();

    } else {
        decorView.setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
                        | View.SYSTEM_UI_FLAG_FULLSCREEN 
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);
        getSupportActionBar().hide();
        playerView.hideController();
        
    }

@Override
public boolean onSingleTapUp(MotionEvent e) {

         if (hasfocused) {
            onWindowFocusChanged(true);
            hasfocused = false;
        } else {
            onWindowFocusChanged(false);
            hasfocused = true;
        }
   }

且XML为

version="1.0" encoding="utf-8"?>

    

   

      


推荐答案

为防止视图移动/布局调整大小,支持状态栏和导航-获取活动的当前窗口,并在onCreate()中设置下方标志。

getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
并且在不更改onWindowFocusChangedxml文件的情况下,您可以检查程序。我认为您应该在onSingleTapUp(MotionEvent e)if..else中使用另一个boolean,而不是使用myToolbar.isShown()。这是在焦点获得或失去时制造冲突。

因此在您的活动中使用布尔值private boolean hasfocused;

然后更改onSingleTapUp如下-

   @Override
        public boolean onSingleTapUp(MotionEvent e) {
            if (hasfocused) {
                onWindowFocusChanged(true);
                hasfocused = false;
            } else {
                onWindowFocusChanged(false);
                hasfocused = true;
            }

            return true;
        }

如果需要触发上述方法,则onDownonSingleTapConfirmed也返回TRUE。

@Override
        public boolean onDown(MotionEvent event) {
            return true;
        }

 @Override
        public boolean onSingleTapConfirmed(MotionEvent e) {
            return true;
        }



    

这篇关于阻止在Android中调整布局大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持吉威生活!



[英文标题]Prevent the layout from resizing in android


声明:本媒体部分图片、文章来源于网络,版权归原作者所有,如有侵权,请联系QQ:330946442删除。