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

时间:2018-01-19 12:31:30

标签: c# android xamarin.android android-edittext

我有一个EditText(称为Stock)。我向Stock添加了一个EditorAction。当我点击Stock时,编辑器被打开,一切正常。现在我想要相同的行为,但是从代码中的不同部分调用。我试图调用Stock.CallOnClick()但没有任何反应。我的印象是编辑器的打开是由OnClick()事件引起的。

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

感谢。

2 个答案:

答案 0 :(得分:1)

  

现在我想要相同的行为,但是从代码中的不同部分调用。我试图调用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());
    

答案 1 :(得分:0)

因此,您需要调用InputMethodManager并在editoraction事件中调用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);
        };

股票是我的EditText。