android-隐藏软键(永久),同时改变活动

问题描述:

我的智能手机有软键,我想永久隐藏在我的APP中。 我使用下面的功能来隐藏软键。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那activitys功能,之前的保护无效的onCreate(捆绑savedInstanceState) 像这样..

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    setFullscreen(true); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.myLayout); 
} 

问题:我改变了活动和软键出现,再次隐藏。我如何防止他们出现?

我也用“stateHidden”清单中的所有activitys

 <activity 
     android:name=".myActivity" 
     android:windowSoftInputMode="stateHidden" /> 

希望你能帮助我了......非常感谢! :)

+0

请参考以下链接https://*.com/questions/18977187/how-to-hide-soft-keyboard-when-activity-starts – Ankita

+0

@Ankita它不工作.. :( – MarieSophie90

+0

@ MarieSophie90使用WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE禁用软键 –

终于!这是一个解决方案。谢谢!

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(); 
}