android 弹出对话框时显示键盘
生活随笔
收集整理的這篇文章主要介紹了
android 弹出对话框时显示键盘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天,簡單講講如何在彈出自定義的對話框時,彈出軟鍵盤。
之前,我講了如何制作自定義的對話框,現在,如果在彈出對話框時,自動彈出軟鍵盤,將光標直接聚焦到自定義對話框的輸入框內,那該怎么做呢?
在網上搜索資料,找到了兩種代碼,可以解決。
一.監聽對話框彈出事件。
實現的關鍵之處就是給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 {@Overrideprotected 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() {@Overridepublic 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"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="彈出對話框包含EditText時自動顯示鍵盤" /><Buttonandroid: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>
運行之后點擊按鈕則彈出對話框,同時彈出鍵盤。
二.在彈出對話框后,是輸入框獲得焦點,并且彈出對話框。
可以在自定義的dialog中增加如下方法:
public void showKeyboard() { if(editText!=null){ //設置可獲得焦點 editText.setFocusable(true); editText.setFocusableInTouchMode(true); //請求獲得焦點 editText.requestFocus(); //調用系統輸入法 InputMethodManager inputManager = (InputMethodManager) editText .getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); } }
在dialog.show()后,
dialog.show(); Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { dialog.showKeyboard(); } }, 300);
第二種代碼更加靈活,效果更好,建議使用第二種代碼。
android? 彈出對話框時顯示鍵盤就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 弹出对话框时显示键盘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 线程锁Lock
- 下一篇: android SharedPrefer