Xamarin.Android 手动调用 EditText 的编辑器



我有一个EditText(称为Stock(。我在股票中添加了一个编辑器操作。当我单击"库存"时,编辑器已打开,一切按预期工作。现在我想要相同的行为,但从代码中的不同部分调用。我试图调用 Stock.CallOnClick((,但什么也没发生。我的印象是编辑器的打开是由 OnClick(( 事件引起的。

模拟点击 EditText 的相同行为的正确调用是什么?

谢谢。

现在我想要相同的行为,但从代码中的不同部分调用。我试图调用 Stock.CallOnClick((,但什么也没发生。

如果我理解正确invoked from a different part in the code,您需要使用EditText.SetOnEditorActionListener(TextView.IOnEditorActionListener)

  1. 创建一个新类继承java.lang.objectTextView.IOnEditorActionListener并实现它:

    public class MyAction : Java.Lang.Object, TextView.IOnEditorActionListener
    {
        public void Dispose()
        {
            this.Dispose();
        }
        public bool OnEditorAction(TextView v, [GeneratedEnum] ImeAction actionId, KeyEvent e)
        {
            //insert your codes here
            return true;
        }
    }
    
  2. 然后,您可以将MyAction的实例传递给SetOnEditorActionListener

    etStock = FindViewById<EditText>(Resource.Id.etStock);
    etStock.SetOnEditorActionListener(new MyAction());
    

所以你需要调用 InputMethodManager,并在你想要的地方调用 ShowSoftInput((,并在编辑器操作事件中调用 HideSoftInput((。

        buttonStock.Click += delegate
        {
            stock.RequestFocus(); // this seems to be necessary
            stock.SelectAll(); // this is convenient
            var imm = ((InputMethodManager)GetSystemService(InputMethodService));
            imm.ShowSoftInput(stock, ShowFlags.Forced);
        };

股票是我的编辑文本。

最新更新