Closed Blizzard-liu closed 5 years ago
我试下
` edit_text.isFocusable = true edit_text.isFocusableInTouchMode = true edit_text.requestFocus() InputMethodUtils.showInputMethod(edit_text,100)
只能在dialog内唤起,外面不行
@Blizzard-liu 在你弹出弹窗后点击输入框不就能弹出输入法了吗,你的需求是什么样的?
继承BottomPopupView,当软键盘弹出后,点击外部空白区域不消失,隐藏软键盘就没有问题了
edit_text是获取焦点的
''' class CommentPopup(val context: Activity,val title: String,val hint: String,val listener: OnSubmitClickListener) : BottomPopupView(context) { override fun getImplLayoutId(): Int { return R.layout.dialog_resume_layout }
override fun initPopupContent() {
super.initPopupContent()
iv_close.setOnClickListener {
dismiss()
}
tv_title.text = title
edit_text.hint = hint
if (title.contains("留言")) {
//简历/面试结果必选,备注内容选填(最多200字)
//只有选中面试结果后,提交按钮才可用
recyclerView.visibility = View.GONE
btn_submit.isEnabled = false
}
recyclerView.layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL,false)
recyclerView.addItemDecoration(CommonItemDecoration(20,0))
val data = arrayListOf<ResumeDialogBean>().apply {
add(ResumeDialogBean("优秀",true))
add(ResumeDialogBean("良好"))
add(ResumeDialogBean("合格"))
add(ResumeDialogBean("不合格"))
}
val adapter = ResumeBottomAdapter(context,data)
recyclerView.adapter = adapter
adapter.setOnItemClickListener { _adapter, _, position ->
data.forEach {
it.isChecked = false
}
val bean = _adapter.data[position] as ResumeDialogBean
bean.isChecked = true
_adapter.notifyDataSetChanged()
}
edit_text.filters = arrayOf<InputFilter>(InputFilter { source, _, _, dest, _, _ ->
if (dest.toString().length + source.length <= 200) {
return@InputFilter source //匹配 source为新字符 dest为原字符
} else {
if (dest.toString().length >= 200) {
ToastUtils.Infotoast(context,"最多只能输入200个文字")
"" //返回""
} else {
source.subSequence(0, 200 - dest.toString().length)
}
}
})
edit_text.addTextChangedListener(object : TextWatcher {
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int,
after: Int) {
}
override fun afterTextChanged(s: Editable) {
// 输入后的监听
btn_submit.isEnabled = !(TextUtils.isEmpty(s.toString()) && title.contains("留言"))
}
})
btn_submit.setOnClickListener {
var label = ""
if (!title.contains("留言")) {
data.forEach { item ->
if (item.isChecked) {
label = item.title
return@forEach
}
}
}
listener.onSubmit(label,edit_text.text.toString())
dismiss()
}
Utils.showSoftInput(context,edit_text)
}
interface OnSubmitClickListener {
fun onSubmit(label: String,msg: String)
}
'''
@Blizzard-liu 刚才试了下确实有这个bug,我抽空修复下。
ok
大佬 可以试下kotlin
@Blizzard-liu 如果你用Kotlin,千万不要错过我的另一个库: https://github.com/li-xiaojun/AndroidKTX 让你爽翻天。
牛逼牛逼
@Blizzard-liu
点击外部无法消失的Bug在最新版本1.3.8
已经解决,请更新试试。
这个提示怎么去掉 看着好烦
@Blizzard-liu 相信我不要去掉它,它会在你的代码出问题时才提示,有时候能帮上很大忙。
我实说这个类名报黄,正常应该没有才对
1.3.8问题更严重了 软键盘和对话框之间有空白,而且空白距离不固定
软键盘收起在弹出,又会盖住dialog
@Blizzard-liu 可以加我QQ: 16167479 把出问题的代码发我一份,我帮你看看。我这边不好复现
@Blizzard-liu
在最新版本1.3.9
增加了autoOpenSoftInput
的设置,只需执行如下设置:
XPopup.get(this).autoOpenSoftInput(true) //是否弹窗显示的同时打开输入法,只在包含输入框的弹窗内才有效,默认为false
无需再自己操作输入法。
@li-xiaojun 大佬,想问下有监听软件关闭的回调吗?我在软键盘弹出后点击软键盘的关闭按钮,弹窗没有关闭,请问可以在哪里将弹框关闭?
@Blizzard-liu 你是说在弹窗显示的同时让软键盘弹出来,那你完全可以在show之后让软键盘显示出来。