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
主程序:
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
相关文章推荐
- Toolbar包含EditText时,点击键盘弹出时Toolbar被拉伸
- 包含EditText组件的界面中,禁止自动弹出软键盘
- Toolbar包含EditText时,点击键盘弹出时Toolbar被拉伸
- 对话框包含EditText自动弹出软键盘
- android中AlertDialog包含EditText时弹出键盘(dia和软键盘同时弹出)
- 包含EditText组件的界面中,禁止自动弹出软键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘
- android开发 禁止EditText自动弹出键盘
- 设置EditText获得焦点,同时弹出小键盘
- 软键盘 ListView中包含EditText 重绘 ,失去焦点
- Android中设置EditText获得焦点时不弹出软键盘
- Android Edittext 开发常见问题总结(焦点、输入、键盘弹出等)
- android Edittext 隐藏系统弹出的键盘
- Android中使EditText失去焦点,edittext禁止弹出键盘[转]
- Android中使EditText失去焦点,edittext禁止弹出键盘
- 如何设置EditText为密码框,并且得到焦点时弹出的是数字键盘
- Android开发中,如何防止刚进入activity,EditText处于编辑状态,弹出键盘
- ”Dialog中包含EditText“时,控制输入法的”隐藏/自动弹出“操作
- android Edittext 监听软键盘弹出显示和消失隐藏
- 防止刚进入activity的时候,edittext获取焦点,自动弹出软键盘