【问题标题】:Focus Edit Text Programmatically (Kotlin)以编程方式聚焦编辑文本 (Kotlin)
【发布时间】:2018-06-07 14:12:59
【问题描述】:

我有一个createEditText 函数,它创建一个EditText 并将其添加到视图中。我的问题是,一旦将其添加到视图中,用户必须点击 EditText 才能调用键盘并进行编辑。我想要做的是拥有它,这样一旦创建了EditText,用户就会自动进入编辑模式。

在IOS编程中,有一个叫做becomeFirstResponder()的函数可以实现这一点。 android 等价物是什么?

我尝试过的事情:

myEditText.requestFocus()
myEditText.isActivated
myEditText.isFocused
myEditText.isSelected
myEditText.isEnabled

【问题讨论】:

    标签: android kotlin android-edittext


    【解决方案1】:

    不幸的是,仅拨打EditText#requestFocus 是不够的。除此之外,您还必须致电InputMethodManager#showSoftInput。以下实用方法应该可以工作:

    fun openSoftKeyboard(context: Context, view: View) {
        view.requestFocus()
        // open the soft keyboard
        val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
    }
    

    【讨论】:

    • 工作就像一个魅力!谢谢
    【解决方案2】:

    这只是一个想法(有点伪代码只是为了澄清事情):

    myEditText.requestFocus()
    (activity or dialog).window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
    

    如果连接了硬件键盘,请注意不要显示软键盘

    【讨论】:

    • 这是科特林??
    • 什么是window?当我尝试输入此代码时,我找不到它。
    • 是Activity.getWindow(),也可以从对话框中调用。
    【解决方案3】:

    在布局的 xml 文件中的 EditText 视图中添加 <requestFocus />

    【讨论】:

    • 不幸的是,我不是在活动中创建这个EditText,而是在适配器中。结果,没有xml文件。
    猜你喜欢
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 2020-02-07
    • 2013-12-23
    • 1970-01-01
    相关资源
    最近更新 更多