自定义了一个带EditText系统级的Dialog,在Window中show出来,但是当弹出输入法时将输入框挡住了,严重影响用户体验
需要设置Window的层级为WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
同时需要在Dialog的style样式中设置windowSoftInputMode属性
<style name="InputDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowSoftInputMode">stateVisible|adjustPan</item>
</style>
自定义PasswordDialog代码如下:
package com.example.myapplication;
import android.content.Context;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
public class PasswordDialog extends BaseDialog {
private TextView mTvTitle;
private TextView mTvContent;
private Button mBtnConfirm;
private Button mBtnCancel;
private View mHorizontalLine;
private View mVerticalLine;
private FrameLayout mContentLayout;
public PasswordDialog(Context context) {
super(context);
}
public PasswordDialog(Context context, int theme) {
super(context, theme);
}
@Override
protected void initManager() {
}
@Override
protected int getLayoutId() {
return R.layout.dialog_warn;
}
@Override
protected void initView(View view) {
mTvTitle = view.findViewById(R.id.tv_dialog_title<

该博客介绍了如何在Android中自定义一个带有EditText的Dialog,并解决当弹出输入法时Dialog被遮挡的问题。通过设置Window的层级为WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY和在Dialog的style中设置windowSoftInputMode为stateVisible|adjustPan,可以确保输入法出现时不覆盖EditText。同时,提供了自定义Dialog的Builder模式实现,允许设置标题、内容、按钮等,并展示了使用示例。
&spm=1001.2101.3001.5002&articleId=124042284&d=1&t=3&u=ea3e0969a57542028f1337aaac72b331)
5212

被折叠的 条评论
为什么被折叠?



