我有一个EditText(称为Stock(。我在股票中添加了一个编辑器操作。当我单击"库存"时,编辑器已打开,一切按预期工作。现在我想要相同的行为,但从代码中的不同部分调用。我试图调用 Stock.CallOnClick((,但什么也没发生。我的印象是编辑器的打开是由 OnClick(( 事件引起的。
模拟点击 EditText 的相同行为的正确调用是什么?
谢谢。
现在我想要相同的行为,但从代码中的不同部分调用。我试图调用 Stock.CallOnClick((,但什么也没发生。
如果我理解正确invoked from a different part in the code
,您需要使用EditText.SetOnEditorActionListener(TextView.IOnEditorActionListener)
:
-
创建一个新类继承
java.lang.object
并TextView.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; } }
-
然后,您可以将
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);
};
股票是我的编辑文本。