2015-07-20 133 views
0

我使用Xamarin和C#:隱藏Android的默認鍵盤

我創建了一個自定義鍵盤Keyboardview並希望從不斷彈出禁用An​​droid的默認softkeyboard。

此活動包含約60行的EditText。

這似乎不起作用,它會出現,一旦我點擊另一個EditText。

Window.SetSoftInputMode (SoftInput.StateAlwaysHidden); 

我KeyboardView:

protected override void OnCreate (Bundle bundle){ 

    Window.SetSoftInputMode (SoftInput.StateAlwaysHidden); 

    base.OnCreate (bundle); 

    SetContentView (Resource.Layout.ORDER); 
    mKeyboardView = this.FindViewById<KeyboardView> (Resource.Id.keyboardview); 
    mKeyboardView.Keyboard = mKeyboard; 
    mKeyboardView.PreviewEnabled = false; 

    var keyboardListener = new MyKeyboardListener(this); 

    mKeyboardView.OnKeyboardActionListener = keyboardListener; 
} 
+0

很難給你的意見不知道你在做什麼。所有刪除軟鍵盤的方法都會以某種骯髒的黑客行爲結束,並可能對您的應用程序產生影響。所以這裏是我的問題: 當你關注你的EditText時,應該發生什麼? –

+0

沒有什麼應該發生,因爲我有一個自定義的鍵盤,總是會在那裏。現在的問題是,屏幕上有兩個鍵盤,我的自定義鍵盤和默認鍵盤,我想禁用顯示的默認鍵盤。我只是希望它在單個活動中被禁用。 –

回答

0

您可以撥打點擊這個方法,隱藏系統鍵盤,然後打電話給你的自定義鍵盤:

private void MakeEditable(bool isEditable, EditText et) 
    { 
     var imm = (InputMethodManager)GetSystemService(InputMethodService); 

     if (isEditable) 
     { 
      et.Focusable = true; 
      et.Enabled = true; 
      et.Clickable = true; 
      et.FocusableInTouchMode = true; 
      et.SetSelection(et.Text.Length); 
      et.RequestFocus(); 
      imm.ShowSoftInput(et, ShowFlags.Implicit); 
     } 
     else 
     { 
      et.Focusable = false; 
      et.FocusableInTouchMode = false; 
      et.Clickable = true; 
      imm.HideSoftInputFromWindow(et.WindowToken, HideSoftInputFlags.None); 
     } 
    }