1. 程式人生 > >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 {

	@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>

執行之後點選按鈕則彈出對話方塊,同時彈出鍵盤。

二.在彈出對話方塊後,是輸入框獲得焦點,並且彈出對話方塊。

可以在自定義的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 對話方塊顯示鍵盤

今天,簡單講講如何在彈出自定義的對話方塊時,彈出軟鍵盤。 之前,我講了如何製作自定義的對話方塊,現在,如果在彈出對話方塊時,自動彈出軟鍵盤,將游標直接聚焦到自定義對話方塊的輸入框內,那該怎麼做呢? 在網上搜索資料,找到了兩種程式碼,可以解決。 一.監聽對話方塊彈出事件

對話方塊,點選“取消”表單仍然提交的解決方法

大家在實際工作中用js的時候可能會遇到這種情況:confirm()彈出的對話方塊,當用戶點選“取消”的時候,表單仍然提交的問題; 一般來說這種問題產生的原因有一下幾點:1:在判斷comfirm ()為“取消”的時候,我們沒有返回false;即:if(!comfirm(“確定要提交表單嗎?”)){ &

Android對話方塊--Alertdialog(系統自帶的)

一. 我們在平時做開發的時候,免不了會用到各種各樣的對話方塊,相信有過其他平臺開發經驗的朋友都會知道,大部分的平臺都只提供了幾個最簡單的實現,如果我們想實現自己特定需求的對話方塊,大家可能首先會想到,通過繼承等方式,重寫我們自己的對話方塊。當然,這也是不失為一個不錯的解決方

android對話方塊中帶有確定和取消對話方塊帶事件的應用

上次看了一個關於android中對話方塊的使用,其中對帶確定和取消的對話方塊講的並不詳細,自己補全了一下,當確定和取消按鈕中有事件時的情況,沒事件時用null就行了 new AlertDialog.Builder(this).setTitle("標題").setMessag

Android 自定義對話方塊顯示不全的問題

昨天需要用自定義AlertDialog來實現一項功能,步驟大體是: 1.自定義佈局檔案 2.初始化AlertDialog,並設定setView 3.按鈕 文字框啥的處理 為了偷懶直接copy工程裡面同事完成的對話方塊。但是我修改後效果卻不一樣,先看我的佈局檔案圖示: 這

Android安卓自定義由底部對話方塊

努力不一定立刻會有好的結果,但一定是朝著好的方向                           ——李尚龍 《你所謂的穩定,不過是在浪費生命》

android開發入門 點選按鈕對話方塊

1、在layout中新增按鈕 2、在MainActivity中新增以下函式 public void showDialog(View view){ AlertDialog.Builder builder=new AlertDialog.Builder(this);

Android ListView長按對話方塊

ListView長按彈出對話方塊可以用PopupWindow實現 今天記錄的是重寫onCreateContextMenu和onContextItemSelected實現彈出對話方塊,比前者簡單很多

Android中使用廣播接收者來對話方塊的坑

琢磨了老半天,試了一下網上說的一種方法,我發現不行,這種方法是這樣的: 1.首先註冊靜態廣播 2.在清單中新增許可權 <uses-permission android:name="android

android——自動檢測網路變化,斷網對話方塊提示

一、首先,建立一個類繼承BroadcastReceiver,重寫onReceive 方法 在onReceive方法中新增操作程式碼 二、在MainActivity中添加註冊操作 三、別忘了,在AndroidManifest.xml中新增許可權 <

《重灌系統重啟介面對話方塊(計算機意外地重新啟動或遇到錯誤,Windows安裝無法繼續……)》

原因:系統盤空間不足 方法: 用4G以上的U盤製作啟動盤,裡面提前放好要裝的系統映象,然後重啟電腦用它進入PE,去裡面格式化你的c盤(系統盤),就可以安裝系統映象了。 (以後儘量別用裝機版、ghost

android退出應用:對話方塊退出應用

(1)定義棧,寫一個Exitactivity 類,利用單例模式管理Activity,在每個在Activity 的onCreate()方法中呼叫Exitactivity.getInstance().addActivity(this)方法,在退出時呼叫Exitactivity.

Android按返回鍵對話方塊退出應用程式

在當前的Activity中新增以下程式碼:import android.app.Activity; import android.app.AlertDialog; import android.con

Qt 關於對話方塊,實現居中顯示

本人實現的是 QFrame 居中! 因為要實現QFrame 彈出居中顯示。。 在QFrame->show之前實現move,但是這樣是取不到QFrame真實的大小! 在QFrame->show之後實現move,這時move就會出現閃屏的現象發生。 用resi

AngularJS進階(六)AngularJS+BootStrap實現對話方塊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JavaScript中的三種對話方塊

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

js--對話方塊、改變控制元件內容、驗證輸入郵箱的合法性

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript">

$.ligerDialog對話方塊

http://tw.kmust.edu.cn/js/plugins/dialog/index.html   對話方塊使用時可以使用動態載入,比如,下面顯示一個彈框可以這樣寫:展開程式碼檢視程式碼 列印? 1.//使用using函式動態載入需要的模組、js、css檔案 2

JavaScript對話方塊alert、confirm、prompt

1、alert()–警告訊息框  alert 方法有一個引數,即希望對使用者顯示的文字字串。該字串不是 HTML 格式。該訊息框提供了一個“確定”按鈕讓使用者關閉該訊息框,並且該訊息框是模式對話方塊,  也就是說,使用者必須先關閉該訊息框然後才能繼續進行操作。  例如:

JSP對話方塊方式小結

JSP 網頁在與使用者互動的過程中,有時需要彈出提示框,通知使用者一些資訊,如登入密碼錯誤等 在做JSP網頁專案中, 實踐並總結了三種有效的方式   方式1: JSP前端 <script type="text/javascript" language="javascr