相关疑难解决方法(0)

什么触发了View的measure()被调用

在我的应用程序中,我在View的onMeasure()覆盖之一上有一个无限循环.从我的onMeasure中的断点开始调试源代码,我能够一直跟踪堆栈跟踪到PhoneWindow $ DecorView的measure()(我的View Hierarchy中最顶级的类),它由ViewRoot调用.performTraversals().现在,如果我继续踩过来,我最终会通过Looper.loop()类中的消息再次调用PhoneWindow $ DecorView的measure().我猜是有些东西排队了一条需要重新测量的消息,比如无效.

我的问题是,什么触发了一个度量调用需要在View上发生?

根据我对布局/测量/绘制过程的理解,这只会在特定视图上调用invalidate()方法时发生,并且会逐渐减少并执行该视图无效的布局/测量/绘制过程以及所有它的孩子.我会假设我的视图层次结构中的最顶层视图无效.

但是,我已经明确地对每一个无效的调用设置了一个断点,并且没有以某种无限的方式调用invalidate.所以我认为不是这样的.是否有其他方法可以触发测量通过?内部可以触发这个吗?在看到无限无效之后,我有点想法了.

layout android measure

43
推荐指数
2
解决办法
4万
查看次数

永久隐藏活动中的导航栏

是否可以永久删除活动上的导航栏?我想用平板电脑上屏幕按钮上显示的按钮删除栏,而不是操作栏.在这里.

我知道不建议这样做,我没有做出这个决定,但我需要这样做.在我的布局上,还有另一个按钮可以离开活动.我的应用程序的其余部分可以拥有并确实拥有导航栏.

我找到了这段代码并对其进行了一些调整.问题是即使我隐藏导航栏,也会留下黑色空间.我想系统会计算屏幕尺寸并考虑到导航栏?

public static class Content extends ImageView implements View.OnSystemUiVisibilityChangeListener, View.OnClickListener, ActionBar.OnMenuVisibilityListener {
    Activity mActivity;
    TextView mTitleView;
    Button mPlayButton;
    SeekBar mSeekView;
    boolean mAddedMenuListener;
    boolean mMenusOpen;
    boolean mPaused;
    boolean mNavVisible;
    int mLastSystemUiVis;

    Runnable mNavHider = new Runnable() {
        @Override public void run() {
            setNavVisibility(false);
        }
    };

    public Content(Context context, AttributeSet attrs) {
        super(context, attrs);
        setOnSystemUiVisibilityChangeListener(this);
        setOnClickListener(this);
    }

    public void init(Activity activity, TextView title, Button playButton,
            SeekBar seek) {
        // This called by the containing activity to supply the …
Run Code Online (Sandbox Code Playgroud)

android hide navigationbar

36
推荐指数
6
解决办法
10万
查看次数

在按下音量或最小化还原后,沉浸模式导航变得粘滞

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        this.getWindow().getDecorView().setSystemUiVisibility(getSystemUiFlags());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    private static int getSystemUiFlags() {
            return View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION;
    }

}
Run Code Online (Sandbox Code Playgroud)

第一次开始后

第一次开始后

按下音量按钮后或按下最近的应用程序两次后

在此输入图像描述

我看到QuickPic应用程序没有这个bug.我想知道他们是如何省略它的.

android android-fullscreen

29
推荐指数
3
解决办法
3万
查看次数

如何在平板电脑中隐藏系统导航栏?

在我的平板电脑上,它有以下栏来控制回来,回家等(我不知道正确的名称,状态栏?控制栏?操作栏?或其他)

在程序中,它使用以下方法来全屏显示.

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.PROGRESS_INDETERMINATE_OFF);
Run Code Online (Sandbox Code Playgroud)

但我不知道为什么酒吧还在这里.因此,我无法获得正确的屏幕尺寸.

谁能告诉我如何删除它?

酒吧

android android-softbuttons

11
推荐指数
3
解决办法
4万
查看次数

如何在Android应用中隐藏导航栏?

我想知道如何隐藏Android应用程序中的导航栏?

我知道如何隐藏它,但是一旦我触摸屏幕,它就会弹回来.我想隐藏它,就像Clash of Clans之类的游戏隐藏它一样,弹出它的唯一方法是向下滑动通知或者滑动导航栏应该在哪里.

android fullscreen navigationbar android-studio

4
推荐指数
4
解决办法
2万
查看次数

在android 5+中使用导航抽屉时,导航栏隐藏但留下空间

我正在尝试开发一个包含 2 个主要活动的全屏应用程序:LoginActivity 和 DashboardActivity。

LoginActivity 只有用于用户输入登录的 UI,如用户名和密码。在这个屏幕中,导航和状态栏完全隐藏,不留任何空间。

登录 DashboardActivity 后,我有一个带有导航抽屉的工具栏。在这个活动中,我做了我在 LoginActivity 中所做的所有事情。发生的情况是导航栏和状态栏被隐藏,但导航栏在单独隐藏之前占用的空间仍然存在。

这只发生在 Android 5+ 中。它在 Kitkat 中运行良好。

这是快照: 隐藏之前/隐藏之后

android hide navbar navigation-drawer

3
推荐指数
1
解决办法
1436
查看次数