Java PopupWindow与虚拟键盘重叠
我在显示与键盘重叠的弹出窗口时遇到一些问题。这是我的结果 这里是我的弹出代码:Java PopupWindow与虚拟键盘重叠,java,android,kotlin,popupwindow,Java,Android,Kotlin,Popupwindow,我在显示与键盘重叠的弹出窗口时遇到一些问题。这是我的结果 这里是我的弹出代码: class NoteHintList(val view: View, val listener: MenuDetailFragment.OnItemListClickListener?){ var noteHintList: List<String> = ArrayList<String>() val popupWindow = PopupWindow(view.contex
class NoteHintList(val view: View, val listener: MenuDetailFragment.OnItemListClickListener?){
var noteHintList: List<String> = ArrayList<String>()
val popupWindow = PopupWindow(view.context)
fun setNoteList(noteHint: List<String>){
this.noteHintList = noteHint
}
// ============ TODO: Pop up note hint ================================================================
fun popupWindow(): PopupWindow {
val popUpContents = arrayOfNulls<String>(noteHintList.size)
ArrayList(noteHintList).toArray(popUpContents)
val listView = ListView(view.context)
listView.adapter = noteHintAdapter(popUpContents)
// set the item click listener
listView.setOnItemClickListener { parent, view, position, id ->
listener!!.onItemListClickListener(listView.getItemAtPosition(position).toString())
}
// val params: LinearLayout.LayoutParams = LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
// params.setMargins(16,0,16,0)
popupWindow.setFocusable(false)
popupWindow.contentView = view
// popupWindow.setWidth(WindowManager.LayoutParams.MATCH_PARENT - 32)
// popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT)
popupWindow.setContentView(listView)
return popupWindow
}
// ============ TODO: Popup list adapter for pop up ===================================================
private fun noteHintAdapter(array: Array<String?>): ArrayAdapter<Any> {
return object : ArrayAdapter<Any>(view.context, android.R.layout.simple_list_item_1, array) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
// setting the ID and text for every items in the list
val text = getItem(position)!!.toString()
// visual settings for the list item
val listItem = TextView(context)
listItem.setText(text)
listItem.tag = position
listItem.textSize = 22f
listItem.setPadding(10, 10, 10, 10)
listItem.setTextColor(Color.WHITE)
return listItem
}
}
}
}
})
如何使弹出窗口不与键盘重叠,如果重叠,可能会移动到上方的EditText
,但如果不重叠,仍在下方的EditText
所以结果似乎是这样的:
您可以在
后文本更改
方法中隐藏软键盘,以便在弹出窗口出现时始终隐藏键盘
在PostextChanged
方法中,添加以下内容以隐藏键盘:
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0) //Hide soft keyboard.
此属性是否有助于android:WindowsOfInputMode=“adjustPan | adjustResize”?@BuzzingSilenly:我可以在哪里设置?AndroidManifest的Activity属性…不,弹出窗口仍然重叠。我认为如果用户键入时键盘被隐藏,则弹出窗口非常奇怪,它只是建议用户不要键入太多,只需单击“建议”按钮,但是,如果用户仍然想打字,那么当用户自己打字时,键盘不会被隐藏,而是在用户完成打字后。这样,当用户完成输入时,键盘将被隐藏,弹出窗口将被显示。如果愿意,还可以为隐藏键盘添加延迟。
val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0) //Hide soft keyboard.