您的位置:首页 > 移动开发 > Android开发

android中AlertDialog包含EditText时弹出键盘(dia和软键盘同时弹出)

2017-10-08 17:27 555 查看
原文
实现的关键之处就是给AlertDialog添加一个显示监听器,显示的时候将键盘显示出来。
主程序:

[java] view
plain copy

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();

}

}

布局文件:

[html] view
plain copy

<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);加载自定义的对话框布局文件,然后上文中的

[java] view
plain copy

AlertDialog tempDialog = dialog.create();

tempDialog.setView(et, 0, 0, 0, 0);

tempDialog传入自定义布局的view对象,即上面的alertDialogView
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: