2017-09-21 52 views
0

我的智能手機有軟鍵,我想永久隱藏在我的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://stackoverflow.com/questions/18977187/how-to-hide-soft-keyboard-when-activity-starts – Ankita

+0

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

+0

@ MarieSophie90使用WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE禁用軟鍵 –

回答

0

終於!這是一個解決方案。謝謝!

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