美文网首页
android Dialog中软键盘遮挡输入编辑框editTex

android Dialog中软键盘遮挡输入编辑框editTex

作者: 有一点小怪坏 | 来源:发表于2023-08-06 14:55 被阅读0次

问题描述:dialog中editText被软键盘挡住。
1.在你的dialog的xml文件最外层添加:

<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</androidx.core.widget.NestedScrollView>

2.你的dialog要继承Android系统的Dialog


class AppUpdateDialog2(context: Context) :
    Dialog(context, R.style.CustomDialog) {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        val layoutParams = window?.attributes
        layoutParams?.apply {
            width = WindowManager.LayoutParams.WRAP_CONTENT
            height = WindowManager.LayoutParams.WRAP_CONTENT
            gravity = Gravity.CENTER
        }
        window?.attributes = layoutParams
        setContentView(R.layout.edit_email_dialog_layout)
        //setCanceledOnTouchOutside(false)//点击外部不消失
        //setCancelable(false)//点击返回键不消失
        //这行很关键
window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN or
                WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)


    }

}
<style name="CustomDialog" parent="android:style/Theme.Dialog">
        <!--背景颜色及和透明程度-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!--是否去除标题 -->
        <item name="android:windowNoTitle">true</item>
        <!--是否去除边框-->
        <item name="android:windowFrame">@null</item>
        <!--是否浮现在activity之上-->
        <item name="android:windowIsFloating">true</item>
    </style>

3.使用

val appUpdateDialog =
            activity?.let { AppUpdateDialog2(it) }
        appUpdateDialog?.show()

相关文章

网友评论

      本文标题:android Dialog中软键盘遮挡输入编辑框editTex

      本文链接:https://www.haomeiwen.com/subject/plqwpdtx.html