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
实现的关键之处就是给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
相关文章推荐
- Android学习问题:关于AlertDialog中自定义布局带有的EditText无法弹出键盘
- Android 解决dialog无法弹出输入键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- 超简单的自定义AlertDialog弹出键盘可以输入的
- Android 在弹出Dialog(带EditText)的同时弹出软键盘并且EditText中的内容全选!!!
- Android AlertDialog 设置setSingleChoiceItems不显示列表的原因【setMessage和setSingleChoiceItems不能同时使用】
- android 禁止EditText自动弹出键盘!!
- Android通过事件触发EditText焦点和自动弹出键盘
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android 设置Edittext获取焦点并弹出软键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- Android 中使 EditText 失去焦点,禁止弹出软键盘,及 弹出软键盘后 EditText 自动上移 不致被遮挡
- Android中使EditText失去焦点,edittext禁止弹出键盘
- android 弹出的软键盘遮挡住EditText文本框的解决方案
- Android中使EditText失去焦点,edittext禁止弹出键盘
- android实现软键盘弹出,editText随键盘上移,背景不动
- Android自定义dialog中的EditText无法弹出键盘的解决
- Android EditText弹出软键盘挤压屏幕问题
- Android中使EditText失去焦点,edittext禁止弹出键盘
- android开发中,弹出dialog的同时将软键盘弹出