实现的关键之处就是给AlertDialog添加一个显示监听器,显示的时候将键盘显示出来。
主程序:
- package com.example.alertdialog;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.DialogInterface.OnShowListener;
- import android.os.Bundle;
- import android.view.View;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.EditText;
- import android.widget.Toast;
- public class MainActivity extends Activity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- public void onClick(View v){
- if(v.getId() == R.id.btn_show_dialog){
- showDialog(this);
- }
- }
- public void showDialog(final Context context){
- AlertDialog.Builder dialog = new AlertDialog.Builder(context);
- dialog.setTitle("请输入验证码");
- final EditText et = new EditText(context);
- et.setHint("in put your confirm code");
- dialog.setView(et);//给对话框添加一个EditText输入文本框
- //给对话框添加一个确定按钮,同样的方法可以添加一个取消按钮
- dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface arg0, int arg1) {
- Toast.makeText(context, "提交验证码……", 3000).show();
- }
- });
- //下面是弹出键盘的关键处
- AlertDialog tempDialog = dialog.create();
- tempDialog.setView(et, 0, 0, 0, 0);
- tempDialog.setOnShowListener(new OnShowListener() {
- public void onShow(DialogInterface dialog) {
- InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);
- }
- });
- tempDialog.show();
- }
- }
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="弹出对话框包含EditText时自动显示键盘" />
- <Button
- android:id="@+id/btn_show_dialog"
- android:text="输入验证码"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:onClick="onClick"
- />
- </LinearLayout>
运行之后点击按钮则弹出对话框,同时弹出键盘。
上面的对话框中的控件简单,所以用java代码实现的布局,如果控件较多,需要用xml进行布局,这时解决办法可以参考下面的文章
http://www.cuiweiyou.com/671.html
关键之处是用View alertDialogView = View.inflate(HomeActivity.this, R.layout.自定义布局, null);加载自定义的对话框布局文件,然后上文中的
- AlertDialog tempDialog = dialog.create();
- tempDialog.setView(et, 0, 0, 0, 0);