可以通過下面的代碼來實現(xiàn)Android自動彈出軟鍵盤:

成都創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導(dǎo)向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、成都app軟件開發(fā)、成都做手機(jī)網(wǎng)站、微信網(wǎng)站制作、軟件開發(fā)、川西大數(shù)據(jù)中心等實行標(biāo)準(zhǔn)化操作,讓客戶可以直觀的預(yù)知到從成都創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。
edittext.requestFocus(); //edittext是一個EditText控件
Timer timer = new Timer(); //設(shè)置定時器
timer.schedule(new TimerTask() {
@Override
public void run() { //彈出軟鍵盤的代碼
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edittext, InputMethodManager.RESULT_SHOWN);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
}
}, 300); //設(shè)置300毫秒的時長
說明:同樣是在寫Techo Lite時遇到的問題。希望程序可以自動彈出軟鍵盤,可是嘗試了各種辦法都沒有效果。問題的原因似乎是必須等待UI繪制完成后彈出軟鍵盤的代碼才會有效。于是就采用了上面的方法。需要注意的是,在此之前必須讓edittext獲取焦點,不然也是無效的。
Android軟鍵盤強(qiáng)制彈出及隱藏輸入法的方法:
很多應(yīng)用中對于一個界面比如進(jìn)入搜索界面或者修改信息等等情況,為了用戶體驗應(yīng)該自動彈出軟鍵盤而不是讓用戶主動點擊輸入框才彈出(因為用戶進(jìn)入該界面必然是為了更改信息)。具體實現(xiàn)這種效果的代碼如下:
java代碼
EditText editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
InputMethodManager inputManager =
(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
首先要對指定的輸入框請求焦點。然后調(diào)用輸入管理器彈出軟鍵盤。
警告:對于剛跳到一個新的界面就要彈出軟鍵盤的情況上述代碼可能由于界面為加載完全而無法彈出軟鍵盤。此時應(yīng)該適當(dāng)?shù)难舆t彈出軟鍵盤如998毫秒(保證界面的數(shù)據(jù)加載完成)。實例代碼如下:
java代碼:
Timer timer = new Timer();
timer.schedule(new TimerTask()
{
public void run()
{
InputMethodManager inputManager =
(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
}
},
998);
一、效果圖:
二、Code:
/**
*? 1、獲取main在窗體的可視區(qū)域
*? 2、獲取main在窗體的不可視區(qū)域高度
*? 3、判斷不可視區(qū)域高度,之前根據(jù)經(jīng)驗值,在有些手機(jī)上有點不大準(zhǔn),現(xiàn)改成屏幕整體高度的1/3
*? ? ? 1、大于屏幕整體高度的1/3:鍵盤顯示? 獲取Scroll的窗體坐標(biāo)
*? ? ? ? ? ? ? ? ? ? ? ? ? 算出main需要滾動的高度,使scroll顯示。
*? ? ? 2、小于屏幕整體高度的1/3:鍵盤隱藏
*
* @param main 根布局?
* @param scroll 需要顯示的最下方View
*/
public static void addLayoutListener(final View main, final View scroll) {
main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
? ? @Override
? ? public void onGlobalLayout() {
? ? ? ? Rect rect = new Rect();
? ? ? ? main.getWindowVisibleDisplayFrame(rect);
? ? ? ? int screenHeight = main.getRootView().getHeight();
? ? ? ? int mainInvisibleHeight = main.getRootView().getHeight() - rect.bottom;
? ? ? ? if (mainInvisibleHeight screenHeight / 4) {
? ? ? ? ? ? int[] location = new int[2];
? ? ? ? ? ? scroll.getLocationInWindow(location);
? ? ? ? ? ? int srollHeight = (location[1] + scroll.getHeight()) - rect.bottom;
? ? ? ? ? ? main.scrollTo(0, srollHeight);
? ? ? ? } else {
? ? ? ? ? ? main.scrollTo(0, 0);
}
}
});
}
三、調(diào)用方式:
在Activity的onCreate()中調(diào)用,
僅此記錄。
1、首先,在xml文件中通過讓edittext獲取焦點
EditText
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? android:padding="17dp"
? ? android:textColor="#333333"
? ? android:textColorHint="#999999"
? ? android:hint="請輸入課件描述..."
? ? android:gravity="top|left"
? ? android:background="@null"
? ?
? ? requestFocus/
/EditText
2、在清單文件中給activity添加android:windowSoftInputMode=”stateVisible”屬性,這樣一進(jìn)入這個頁面的時候光標(biāo)就自動顯示,軟鍵盤也顯示出來
activity
? ? ? ? android:name=".wonderfulmoment.AddCourseWareDescriptionActivity"
? ? ? ? android:windowSoftInputMode="stateVisible"/activity
原因是因為當(dāng)界面初始化的時候可能EditText并沒有初始化完成,就要求顯示軟鍵盤了。
在包含EditText外層布局上添加,搶在EditText獲取焦點,即可。
正常情況下,只要寫了EditText控件,當(dāng)進(jìn)入Activity時,是會直接顯示軟鍵盤的,但是如果我們的EditText是GONE或者INVISIBLE的話,當(dāng)我們點擊其他控件,然后讓Edittext顯示,并且彈出軟鍵盤,那么這個時候就必須關(guān)注順序的問題,必須必須先讓EditText顯示,在調(diào)用顯示軟鍵盤的代碼才可以,如果先讓軟鍵盤彈出再讓EditText顯示,這個時候軟鍵盤是彈不出來的。
網(wǎng)站名稱:android鍵盤彈出,android鍵盤彈出流程
標(biāo)題網(wǎng)址:http://chinadenli.net/article27/dseoecj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站維護(hù)、面包屑導(dǎo)航、商城網(wǎng)站、網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)