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

android中AlertDialog包含EditText时弹出键盘

2014-10-27 16:56 459 查看
实现的关键之处就是给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);tempDialog传入自定义布局的view对象,即上面的alertDialogView
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息