package cn.flightfeather.thirdapp.view
|
|
import android.content.Context
|
import android.inputmethodservice.InputMethodService
|
import android.support.v4.content.ContextCompat
|
import android.text.Editable
|
import android.text.TextWatcher
|
import android.util.AttributeSet
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.inputmethod.InputMethodManager
|
import android.widget.EditText
|
import android.widget.FrameLayout
|
import android.widget.ImageView
|
import android.widget.TextView
|
import cn.flightfeather.thirdapp.R
|
|
/**
|
* @author riku
|
* Date: 2020/12/22
|
*/
|
class SearchView(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : FrameLayout(context, attrs, defStyleAttr) {
|
|
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
|
|
constructor(context: Context) : this(context, null, 0)
|
|
private lateinit var e: EditText
|
|
private val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
|
var onConfirm: (str: String) -> Unit = { _ -> }
|
|
init {
|
initView()
|
}
|
|
private fun initView() {
|
val view = LayoutInflater.from(context).inflate(R.layout.layout_search, this)
|
e = view.findViewById(R.id.edt_content)
|
val c = view.findViewById<ImageView>(R.id.img_clear)
|
val y = view.findViewById<TextView>(R.id.txt_confirm)
|
val n = view.findViewById<TextView>(R.id.txt_cancel)
|
e.addTextChangedListener(object : TextWatcher {
|
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) = Unit
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) = Unit
|
override fun afterTextChanged(s: Editable?) {
|
if (s.isNullOrBlank()) {
|
c.visibility = View.GONE
|
// y.visibility = View.GONE
|
// n.visibility = View.VISIBLE
|
} else {
|
c.visibility = View.VISIBLE
|
// y.visibility = View.VISIBLE
|
// n.visibility = View.GONE
|
}
|
|
}
|
})
|
c.setOnClickListener {
|
e.setText("")
|
}
|
y.setOnClickListener {
|
this.visibility = View.GONE
|
imm.hideSoftInputFromWindow(windowToken, 0)
|
onConfirm(e.text.toString())
|
}
|
n.setOnClickListener {
|
e.setText("")
|
imm.hideSoftInputFromWindow(windowToken, 0)
|
this.visibility = View.GONE
|
}
|
}
|
|
fun show(hint: String = "", default: String = "") {
|
this.visibility = View.VISIBLE
|
e.hint = hint
|
e.setText(default)
|
e.requestFocus()
|
imm.showSoftInput(e, InputMethodManager.SHOW_IMPLICIT);
|
}
|
}
|