在我的应用程序中隐藏Android默认密钥(主页,后退和其他)

时间:2015-12-28 10:06:35

标签: android android-fullscreen

我有一个项目,其中我想要Layouts FullScreen或隐藏Android Soft个键。 我尝试使用谷歌搜索解决方案

  1. Hide Action Bar
  2. SYSTEM_UI_FLAG_HIDE_NAVIGATION
  3. 同时测试应用Theme.AppCompat.Light.NoActionBar
  4. 中主题的更改

    我使用以下代码禁用了Back密钥:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {    
            if(keyCode == KeyEvent.KEYCODE_HOME)
            {
                Log.i("Home Button", "Clicked");
            }
            if(keyCode==KeyEvent.KEYCODE_BACK)
            {
    
                finish();
            }
            return false;
    };
    

    但我想禁用所有软键或隐藏它们。 请注意,我的应用可以使用的设备是Lenovo Tab2Virtual Soft keys就像这样Pic

4 个答案:

答案 0 :(得分:4)

在onCreate方法和setContentView()之后使用此代码。它帮助了我。

if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT )
        {
            getWindow().getDecorView().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 // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY );
        }

答案 1 :(得分:1)

试试这个:

View.setSystemUiVisibility(
                  View.SYSTEM_UI_FLAG_LOW_PROFILE
                | View.SYSTEM_UI_FLAG_FULLSCREEN
                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

答案 2 :(得分:1)

  

如果你只需要隐藏菜单项,只需将setVisible隐藏为false。在onCreateOptionsMenu中输入menu.findItem(R.id.action_back).setVisible(false);我在我的应用程序中尝试过类似的东西。这是我在onCreateOptionsMenu中使用的代码。

 if (menu != null) {
        menu.findItem(R.id.action_register).setVisible(false);
        menu.findItem(R.id.action_search).setVisible(false);
        menu.findItem(R.id.action_settings).setVisible(false);
        menu.findItem(R.id.action_refresh).setVisible(false);
    }

答案 3 :(得分:0)

当活动失去焦点时,您可能会发现沉浸式模式丢失。重新获得焦点后,它可能无法恢复沉浸式模式。 要确保应用在焦点更改时不会失去沉浸式模式,请使用onWindowFocusChanged方法实现代码,而不是onCreate方法。

来源:https://developer.android.com/training/system-ui/immersive.html

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
    getWindow().getDecorView().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_STICKY);}
}
相关问题