在我的应用程序中隐藏 Android 默认键(Home、Back 和其他)
Hide Android Default key (Home,Back and the other) in my App
我有一个项目,我想在其中隐藏 Layouts
FullScreen
或隐藏 Android Soft
键。
我通过像
这样的谷歌搜索尝试了解决方案
- Hide Action Bar
- SYSTEM_UI_FLAG_HIDE_NAVIGATION
- 同时测试应用中主题的变化
Theme.AppCompat.Light.NoActionBar
我使用此代码禁用了 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 Tab2
并且 Virtual
Soft keys
像这样 Pic.
在 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 );
}
试试这个:
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);
If you just need to hide the menu items just setVisible to false.Inside onCreateOptionsMenu say menu.findItem(R.id.action_back).setVisible(false); I have tried something similar in my app.This is the code I used inside my 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);
}
您可能会发现,当 activity 失去焦点时,沉浸模式也会丢失。重新获得焦点后,它可能不会回到沉浸式模式。
为确保应用不会在焦点更改时失去沉浸式模式,请在 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);}
}
我有一个项目,我想在其中隐藏 Layouts
FullScreen
或隐藏 Android Soft
键。
我通过像
- Hide Action Bar
- SYSTEM_UI_FLAG_HIDE_NAVIGATION
- 同时测试应用中主题的变化
Theme.AppCompat.Light.NoActionBar
我使用此代码禁用了 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 Tab2
并且 Virtual
Soft keys
像这样 Pic.
在 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 );
}
试试这个:
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);
If you just need to hide the menu items just setVisible to false.Inside onCreateOptionsMenu say menu.findItem(R.id.action_back).setVisible(false); I have tried something similar in my app.This is the code I used inside my 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);
}
您可能会发现,当 activity 失去焦点时,沉浸模式也会丢失。重新获得焦点后,它可能不会回到沉浸式模式。
为确保应用不会在焦点更改时失去沉浸式模式,请在 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);}
}