2015-07-20 127 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); 
     } 
    }