android隱藏輸入法
❶ android中怎麼調試軟鍵盤遮擋的問題
問題概述
在編輯框輸入內容時會彈出軟鍵盤,而手機屏幕區域有限往往會遮住輸入界面,我們先看一下問題效果圖:
輸入用戶名和密碼時,系統會彈出鍵盤,造成系統鍵盤會擋住文本框的問題,如圖所示:
輸入密碼時輸入框被系統鍵盤遮擋了,大大降低了用戶操作體驗,這就是開發中非常常見的軟鍵盤遮擋的問題,該如何解決?
簡單解決方案
方法一
在你的activity中的oncreate中setContentView之前寫上這個代碼
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
方法二
在 項目的AndroidManifest.xml文件中界面對應的<activity>里加入
這樣會讓屏幕整體上移。如果加上的 是 android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋屏幕。
關於android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式,可以用來避免輸入法面板遮擋問題,Android1.5後的一個新特性。
這個屬性能影響兩件事情:
【一】當有焦點產生時,軟鍵盤是隱藏還是顯示
【二】是否減少活動主窗口大小以便騰出空間放軟鍵盤
它的設置必須是下面列表中的一個值,或一個」state…」值加一個」adjust…」值的組合。在任一組設置多個值——多個」state…」values,例如&mdash有未定義的結果。各個值之間用|分開。
例如:
<activityandroid:windowSoftInputMode="stateVisible|adjustResize". . . >
在這設置的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設置的值
方法三
把頂級的layout替換成ScrollView,或者說在頂級的Layout上面再加一層ScrollView。這樣就會把軟鍵盤和輸入框一起滾動了,軟鍵盤會一直處於底部。
代碼可控性方法
1、主界面布局文件
2、自定義LinearLayoutView
該組件可實現根據軟鍵盤的彈出/關閉而隱藏和顯示某些區域,這是問題解決最關鍵部分,主要有兩點:
① 重寫onSizeChanged方法
該方法是View生命周期的方法,當View尺寸發生變化時調用,如豎屏橫屏切換、軟鍵盤彈出。這里當軟鍵盤彈出造成View尺寸改變,就會調用onSizeChanged方法,在該方法實現代碼的核心思想是根據尺寸變化,當變大(軟鍵盤彈出),將某些區域隱藏以給編輯界面預留出足夠顯示空間;當恢復(軟鍵盤關閉),再將隱藏的區域顯示出來
②提供KeyBordStateListener 介面採用回調機制調用介面的實現方法。
3.主界面MainActivit
實現效果
鍵盤彈出:
鍵盤關閉:
❷ android中怎麼用代碼實現 隱藏 軟鍵盤
在Android開發中,經常會有一個需求,做完某項操作後,隱藏鍵盤,也即讓Android中的軟鍵盤不顯示。今天,和大家分享如何利用代碼來實現對Android的軟體盤的隱藏、顯示的操作,並給出Demo參考。
1.切換顯示軟鍵盤
這個效果是:如果有軟鍵盤,那麼隱藏它;反之,把它顯示出來。代碼方法如下:
//1.得到InputMethodManager對象
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//2.調用toggleSoftInput方法,實現切換顯示軟鍵盤的功能。
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
2.顯示軟鍵盤
//1.得到InputMethodManager對象
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//2.調用showSoftInput方法顯示軟鍵盤,其中view為聚焦的view組件
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
3.隱藏軟鍵盤
//1.得到InputMethodManager對象
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
//2.調用hideSoftInputFromWindow方法隱藏軟鍵盤
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //強制隱藏鍵盤
4.獲取輸入法打開的狀態
//1.得到InputMethodManager對象
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
//獲取狀態信息
boolean isOpen=imm.isActive();//isOpen若返回true,則表示輸入法打開
❸ android輸入法是怎樣調用的
Android軟鍵盤強制彈出及隱藏輸入法的方法:
很多應用中對於一個界面比如進入搜索界面或者修改信息等等情況,為了用戶體驗應該自動彈出軟鍵盤而不是讓用戶主動點擊輸入框才彈出(因為用戶進入該界面必然是為了更改信息)。具體實現這種效果的代碼如下:
java代碼
EditText editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
InputMethodManager inputManager =
(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
首先要對指定的輸入框請求焦點。然後調用輸入管理器彈出軟鍵盤。
警告:對於剛跳到一個新的界面就要彈出軟鍵盤的情況上述代碼可能由於界面為載入完全而無法彈出軟鍵盤。此時應該適當的延遲彈出軟鍵盤如998毫秒(保證界面的數據載入完成)。實例代碼如下:
java代碼:
Timer timer = new Timer();
timer.schele(new TimerTask()
{
public void run()
{
InputMethodManager inputManager =
(InputMethodManager)editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(editText, 0);
}
},
998);