Dialog中添加EditText, 下面的确定、取消按钮被输入法盖住,以及弹不出输入法的解决方法
private Dialog mDialog;
private EditText mRequestLicenseEditText;
private TextView tv_input_tips;
private Button btn_cancel, btn_ok;
Activity中弹出dialog的方法
private void showEditDialog()
{
AlertDialog.Builder mBuilder = new AlertDialog.Builder(this, R.style.active_code_dialog); //初始化的时候,添加样式
mBuilder.setCancelable(false);
View root = getLayoutInflater().inflate(R.layout.request_license_edit, null);
mRequestLicenseEditText = (EditText) root.findViewById(R.id.request_license_edit);
//调起输入法 start
mRequestLicenseEditText.setFocusableInTouchMode(true);
mRequestLicenseEditText.setFocusable(true);
mRequestLicenseEditText.setClickable(true);
mRequestLicenseEditText.requestFocus();
InputMethodManager inputManager = (InputMethodManager)mRequestLicenseEditText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(mRequestLicenseEditText,0);
//如果是已经入某个界面就要立刻弹出输入键盘,可能会由于界面未加载完成而无法弹出,需要适当延迟,比如延迟500毫秒:
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
public void run()
{
InputMethodManager inputManager=(InputMethodManager)mRequestLicenseEditText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(mRequestLicenseEditText,0);
}
},500);
//调起输入法 end
tv_input_tips = (TextView) root.findViewById(R.id.tv_input_tips);
tv_input_tips.setVisibility(View.GONE);
btn_cancel = (Button) root.findViewById(R.id.btn_cancel);
btn_cancel.setOnClickListener(mClickListener);
btn_ok = (Button) root.findViewById(R.id.btn_ok);
btn_ok.setOnClickListener(mClickListener);
mBuilder.setView(root);
mDialog = mBuilder.create();
mDialog.setCanceledOnTouchOutside(false);
mDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override public void onDismiss(DialogInterface dialog)
{
finish();
}
});
mDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
if (mDialog != null && mDialog.isShowing())
{
return true;
}
}
return false;
}
});
mDialog.show();
WindowManager.LayoutParams lp = mDialog.getWindow().getAttributes();
lp.width=(int)getResources().getDimension(R.dimen.active_dialog_width);
lp.height = (int)getResources().getDimension(R.dimen.active_dialog_height);
mDialog.getWindow().setAttributes(lp);
mDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); //让对话框背后的界面会变暗
}
dialog的style,去掉dialog的边框
<style name="active_code_dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
</style>
布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="500dp"
android:layout_height="300dp"
android:background="@drawable/softsettings_dialog_bg"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingBottom="30dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:paddingTop="50dp">
<EditText
android:id="@+id/request_license_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/edit_bg"
android:digits="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"
android:gravity="left|center"
android:hint="@string/please_input_author_code"
android:maxLines="1"
android:maxLength="16"
android:paddingBottom="15dp"
android:paddingTop="15dp"
android:textColor="@color/dialog_edit"
android:textSize="18sp" />
<TextView
android:id="@+id/tv_input_tips"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/input_activate_is_empty"
android:textColor="@android:color/holo_red_light"
android:visibility="gone"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_weight="1"
android:background="@drawable/dialog_btn_shape"
android:focusable="true"
android:padding="10dp"
android:text="@string/cancel"
android:textColor="@color/dialog_btn_txt"
android:textSize="20sp"/>
<Button
android:id="@+id/btn_neutral"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="50dp"
android:layout_weight="1"
android:background="@drawable/dialog_btn_shape"
android:focusable="true"
android:padding="10dp"
android:textColor="@color/dialog_btn_txt"
android:textSize="20sp"
android:visibility="gone"/>
<Button
android:id="@+id/btn_ok"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="50dp"
android:layout_weight="1"
android:background="@drawable/dialog_btn_shape"
android:focusable="true"
android:padding="10dp"
android:text="@string/confirm"
android:textColor="@color/dialog_btn_txt"
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
softsettings_dialog_bg.xml文件
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/dialog_radius"/>
<stroke
android:width="1.5dp"
android:color="@color/stroke_line"/>
<solid android:color="@color/dialog_bg"/>
</shape>
dialog_btn_shape.xml文件
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<corners android:radius="@dimen/dialog_radius" />
<solid android:color="@color/grey" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<stroke android:width="1.5dp" android:color="@color/possible_result_points" />
<corners android:radius="@dimen/dialog_radius" />
<solid android:color="@color/dialog_btn_color" />
</shape>
</item>
<item>
<shape>
<corners android:radius="@dimen/dialog_radius" />
<solid android:color="@color/dialog_btn_color" />
</shape>
</item>
</selector>