Android- скрыть программную клавишу (навсегда) при изменении активности
У моего смартфона есть программные клавиши, которые я хочу постоянно скрывать в своем приложении. Я использую эту функцию ниже, чтобы скрыть программные клавиши.
public void setFullscreen(boolean fullscreen) {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
if (fullscreen) {
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
}
else {
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
}
getWindow().setAttributes(attrs);
View v = this.getWindow().getDecorView();
v.setSystemUiVisibility(View.GONE);
}
я вызываю эту функцию во всех действиях в onCreate, перед тем как защищенный void onCreate(Bundle saveInstanceState), как это..
@Override
protected void onCreate(Bundle savedInstanceState)
{
setFullscreen(true);
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
}
проблема: я меняю активность, а программные клавиши появляются и снова скрываются. как я могу предотвратить их появление?
я также использую "stateHidden" в манифесте для всех действий
<activity
android:name=".myActivity"
android:windowSoftInputMode="stateHidden" />
надеюсь, вы можете помочь мне... большое спасибо!:)
1 ответ
Решение
В конце концов! вот одно решение. Спасибо!
private void hideSystemUI() {
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);
}
public void setFullscreen(boolean fullscreen) {
WindowManager.LayoutParams attrs = getWindow().getAttributes();
if (fullscreen) {
attrs.flags |= WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
attrs.flags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
attrs.flags |= WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
}
else {
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
attrs.flags &= ~WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
}
getWindow().setAttributes(attrs);
hideSystemUI();
}