Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PopupWindow与虚拟键盘重叠_Java_Android_Kotlin_Popupwindow - Fatal编程技术网

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.