AirBottleDialog.kt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package xn.hxp.weidith
  2. import android.app.Dialog
  3. import android.content.Context
  4. import android.graphics.Color
  5. import android.graphics.drawable.ColorDrawable
  6. import android.os.Bundle
  7. import android.text.InputFilter
  8. import android.view.Gravity
  9. import android.view.KeyEvent
  10. import android.view.Window
  11. import android.view.WindowManager
  12. import android.widget.Button
  13. import android.widget.EditText
  14. import xn.hxp.R
  15. //化学品标签--气瓶标签提示
  16. class AirBottleDialog(private val ct: Context, private val lintDate: ILintDate) : Dialog(ct) {
  17. init {
  18. requestWindowFeature(Window.FEATURE_NO_TITLE)
  19. setContentView(R.layout.air_bottle_dialog)
  20. window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
  21. window?.setGravity(Gravity.CENTER)
  22. window?.setLayout(
  23. WindowManager.LayoutParams.MATCH_PARENT,
  24. WindowManager.LayoutParams.WRAP_CONTENT
  25. )
  26. setCanceledOnTouchOutside(false)
  27. setCancelable(false)
  28. }
  29. override fun onCreate(savedInstanceState: Bundle?) {
  30. super.onCreate(savedInstanceState)
  31. // 禁止EditText中输入换行符
  32. val editText = findViewById<EditText>(R.id.cont)
  33. editText?.filters = arrayOf(InputFilter { source, _, _, _, _, _ ->
  34. if (source.contains("\n") || source.contains("\r")) source.replace(Regex("[\n\r]"), "") else null
  35. })
  36. editText?.setSingleLine(true)
  37. findViewById<Button>(R.id.butClos).setOnClickListener {
  38. dismiss()
  39. }
  40. findViewById<Button>(R.id.butDetermine).setOnClickListener {
  41. val trim = findViewById<EditText>(R.id.cont).text.toString().trim()
  42. if (trim.isEmpty()) {
  43. return@setOnClickListener
  44. } else {
  45. lintDate.onLintDate(trim)
  46. dismiss()
  47. }
  48. }
  49. }
  50. interface ILintDate {
  51. fun onLintDate(cont: String)
  52. }
  53. override fun dispatchKeyEvent(event: KeyEvent): Boolean {
  54. // 只拦截外部设备的ENTER键,其他字符正常传入EditText
  55. if (event.device != null && event.device.isExternal
  56. && (event.keyCode == KeyEvent.KEYCODE_ENTER || event.keyCode == KeyEvent.KEYCODE_NUMPAD_ENTER)) {
  57. return true
  58. }
  59. return super.dispatchKeyEvent(event)
  60. }
  61. }