需要一些有关键盘隐藏代码的建议

时间:2019-03-28 06:57:10

标签: android kotlin keyboard onclicklistener default-method

每当我在应用程序中创建表格(例如登录或注册表格)时,我总是发现一个问题,该问题是用户单击“提交”按钮时隐藏键盘。为了解决这个问题,我总是在Click侦听器的第一行中编写键盘隐藏代码,如果我的应用程序中只有1或2个表单,但是如果应用程序中有保存形式,则此解决方案就可以了应用实际业务逻辑上的某些开销。考虑到维护“键盘可见性” 的开销,我已经开发了一种通用的解决方案来处理此问题。我正在学习使用Kotlin开发Android应用程序,并使用Kotlin接口的“默认方法”开发了此代码。

  

我正在与您共享代码,我需要您的建议和   这种方法的改进。

     

我想知道我是否可以在现场项目中使用这种方法,或者   我只是不能使用这种方法,因为这是错误的。请给我   您宝贵的反馈意见。

MainActivity:

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity(), CustomOnClickListener {

    override fun onClick(v: View?) {
        super<CustomOnClickListener>.onClick(v)
        when(v?.id){
            R.id.button1 -> Toast.makeText(this, "button1 clicked", Toast.LENGTH_LONG).show()
            R.id.button2 -> Toast.makeText(this, "button2 clicked", Toast.LENGTH_LONG).show()
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        button1.setOnClickListener(this)
        button2.setOnClickListener(this)
    }
}

CustomOnClickListener

import android.app.Activity
import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager

interface CustomOnClickListener : View.OnClickListener{
    override fun onClick(v: View?) {
        v?.hideKeyboard()
    }
}

fun View.hideKeyboard() {
    val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
    imm.hideSoftInputFromWindow(windowToken, 0)
}

0 个答案:

没有答案