⑴ vue解決安卓手機軟鍵盤彈出,頁面高度被頂起
在進行聊天界面開發的時候,發現安卓手機鍵盤會把界面頂起,但是不會收回來,在網上找到了這個方法解決
之前我是在mounted中根據document.activeElement.tagName的值判斷是否為INPUT去改變鍵盤彈起的高度
但是在下方加了一個按鈕之後,發現點擊語音按鈕後再切換到輸入框,
document.activeElement.tagName的值變成BODY了,查找資料發現
所以此方法在點擊語音後再也調用不起來,困擾了一天的問題,記錄一下
⑵ 怎麼把android軟鍵盤把布局頂上去
在EditText控制項接近底部的情況下,軟鍵盤彈出後會把獲得焦點的EditText控制項遮擋,無法看到輸入信息,防止這樣的情況發生,就需要設置AndroidManifest.xml的屬性:
前面的xml信息省略
在activity中 增加android:windowSoftInputMode="adjustPan"
<activity
..
android:windowSoftInputMode="adjustPan"
>
</activity>
彈出軟鍵盤以後,軟鍵盤會把EditText推上去。
⑶ 關於Android中的軟鍵盤
原文鏈接:徹底搞定Android開發中軟鍵盤的常見問題
軟體盤的本質是什麼?軟鍵盤其實是一個Dialog。
InputMethodService為我們的輸入法創建了一個Dialog,並且將該Dialog的Window的某些參數(如Gravity)進行了設置,使之能夠在底部或者全屏顯示。當我們點擊輸入框時,系統對活動主窗口進行調整,從而為輸入法騰出相應的空間,然後將該Dialog顯示在底部,或者全屏顯示。
軟鍵盤顯示的調整
Android 定義了一個屬性,名字為windowSoftInputMode, 這個屬性用於設置Activity主窗口與軟鍵盤的交互模式,用於避免軟鍵盤遮擋內容的問題。我們可以在AndroidManifet.xml中對Activity進行設置。如:android:windowSoftInputMode=」stateUnchanged|adjustPan」。 該屬性可選的值有兩部分,一部分為軟鍵盤的狀態控制,控制軟鍵盤是隱藏還是顯示,另一部分是Activity窗口的調整,以便騰出空間展示軟鍵盤。 android:windowSoftInputMode的屬性設置必須是下面中的一個值,或一個」state」值加一個」adjust」值的組合,各個值之間用 | 分開。
stateUnspecified-未指定狀態 :當我們沒有設置android:windowSoftInputMode屬性的時候,軟體默認採用的就是這種交互方式,系統會根據界面採取相應的軟鍵盤的顯示模式。
stateUnchanged-不改變狀態 :當前界面的軟鍵盤狀態,取決於上一個界面的軟鍵盤狀態,無論是隱藏還是顯示。
stateHidden-隱藏狀態 :當設置該狀態時,軟鍵盤總是被隱藏,不管是否有輸入的需求。
stateAlwaysHidden-總是隱藏狀態 :當設置該狀態時,軟鍵盤總是被隱藏,和stateHidden不同的是,當我們跳轉到下個界面,如果下個頁面的軟鍵盤是顯示的,而我們再次回來的時候,軟鍵盤就會隱藏起來。
stateVisible-可見狀態 :當設置為這個狀態時,軟鍵盤總是可見的,即使在界面上沒有輸入框的情況下也可以強制彈出來出來。
stateAlwaysVisible-總是顯示狀態 :當設置為這個狀態時,軟鍵盤總是可見的,和stateVisible不同的是,當我們跳轉到下個界面,如果下個頁面軟鍵盤是隱藏的,而我們再次回來的時候,軟鍵盤就會顯示出來。
adjustUnspecified-未指定模式 :設置軟鍵盤與軟體的顯示內容之間的顯示關系。當你跟我們沒有設置這個值的時候,這個選項也是默認的設置模式。在這中情況下,系統會根據界面選擇不同的模式。
adjustResize-調整模式 :該模式下窗口總是調整屏幕的大小用以保證軟鍵盤的顯示空間;這個選項不能和adjustPan同時使用,如果這兩個屬性都沒有被設置, 系統會根據窗口中的布局自動選擇其中一個 。
adjustPan-默認模式 :該模式下通過不會調整來保證軟鍵盤的空間,而是採取了另外一種策略,系統會通過布局的移動,來保證用戶要進行輸入的輸入框肯定在用戶的視野范圍裡面,從而讓用戶可以看到自己輸入的內容。
案例
沒有滾動布局xml
對於沒有滾動控制項的布局來說,adjustPan就是默認的設置,比如我們案例應用中的文本輸入8,上面的文本輸入框123和按鈕都會被頂上去,且頁面布局不可以滾動。
對於沒有滾動控制項的布局來說,整個布局會網上偏移(包括標題等)以保證輸入框的可見。如果有滾動控制項,那麼就是內容網上偏移,標題不會動,還可以通關滾動來查看被頂上去的內容,而這點是不可滾動的布局所不具備的
有滾動布局xml
對於有滾動控制項的布局,則是採用的adjustResize方式,比如我們案例應用中的文本輸入8,上面的文本輸入框123和按鈕都會被頂上去, 可以通過滾動來查看被頂上去的內容。
** 根據這一原理,我們就可以把開發中遇到的軟鍵盤遮擋頁面的問題,利用ScrollView當做根布局,讓系統採用adjustResize模式,很好地解決這一問題。**
自動彈出軟鍵盤
有時候需要一進入Activity後就自動彈出軟鍵盤,可以通過設置一個時間函數來實現,具體寫法如下:
方法一:
方法二:
有時進入Activity後不希望系統自動彈出軟鍵盤,我們可以按照下面的方法來實現:
方法一:
在AndroidMainfest.xml中選擇那個activity,設置windowSoftInputMode屬性為adjustUnspecified|stateHidden
方法二:
讓EditText失去焦點,使用EditText的clearFocus方法
方法三:
強制隱藏Android輸入法窗口
方法四:
EditText始終不彈出軟體鍵盤
EditText設置ScrollView壓縮背景圖片解決辦法
在你的Activity里加上
有時希望根據條件動態關閉軟鍵盤,我們可以使用InputMethodManager類,按照下面的方法來實現:
方法一:
方法二:
強制隱藏軟鍵盤,這個方法倒是很實用。
方法三:
方法四:
在onclick事件下.以下方法可行.(如果是EditText失去焦點/得到焦點,沒有效果)
InputMethodManager的具體用法可以參考下面的鏈接: http://www.apihome.cn/api/android/InputMethodManager.html
使用android:imeOptinos可對Android自帶的軟鍵盤進行一些界面上的設置:
android:imeOptions="flagNoExtractUi" //使軟鍵盤不全屏顯示,只佔用一部分屏幕
同時,這個屬性還能控制項軟鍵盤右下角按鍵的顯示內容,默認情況下為回車鍵
android:imeOptions="actionNone" //輸入框右側不帶任何提示 android:imeOptions="actionGo" //右下角按鍵內容為'開始' android:imeOptions="actionSearch" //右下角按鍵為放大鏡圖片,搜索 android:imeOptions="actionSend" //右下角按鍵內容為'發送' android:imeOptions="actionNext" //右下角按鍵內容為'下一步' android:imeOptions="actionDone" //右下角按鍵內容為'完成'
同時,可能EditText添加相應的監聽器,捕捉用戶點擊了軟鍵盤右下角按鈕的監聽事件,以便進行處理。
開發中有個需求是將頁面底部的一個按鈕頂起,但是開發時發現Android5.0以後的版本設置了adjustResize屬性後無法成功頂起。糾結了好久,最後在stackoverflow找到解決方案,那就是在根布局上加上fitsSystemWindow=」true」即可。
這里的fitsSystemWindow具體的作用就是你的**contentview是否忽略actionbar,title,屏幕的底部虛擬按鍵,將整個屏幕當作可用的空間。 **
正常情況,contentview可用的空間是去除了actionbar,title,底部按鍵的空間後剩餘的可用區域;這個屬性設置為true,則忽略,false則不忽略
在edittext上加入Android:imeOptions=」actionSearch」這個屬性沒響應,最後發現在2.3及以上版本不起作用,解決方案:加上
因為輸入法鍵盤右下角默認的回車鍵本來就是換行用的,當設置單行後,回車換行就失去作用了,這樣就可以設置為搜索、發送、go等等。
⑷ android 軟鍵盤彈出 怎麼把布局頂上去
解決辦法:
在mainfest.xml中,在和導航欄相關的activity中加:
<activity
android:name=".filing.MainActivity"
android:windowSoftInputMode="adjustResize|stateHidden"
/>
windowSoftInputMode 屬性解釋:
活動的主窗口如何與包含屏幕上的軟鍵盤窗口交互。這個屬性的設置將會影響兩件事情:
1.軟鍵盤的狀態——是否它是隱藏或顯示——當活動(Activity)成為用戶關注的焦點。
2.活動的主窗口調整——是否減少活動主窗口大小以便騰出空間放軟鍵盤或是否當活動窗口的部分被
軟鍵盤覆蓋時它的內容的當前焦點是可見的。
在這設置的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設置的值
它的設置必須是下面列表中的一個值,或一個」state…」值加一個」adjust…」值的組合。
各值的含義:
【A】stateUnspecified:軟鍵盤的狀態並沒有指定,系統將選擇一個合適的狀態或依賴於主題的設置
【B】stateUnchanged:當這個activity出現時,軟鍵盤將一直保持在上一個activity里的狀態,無論是隱藏還是顯示
【C】stateHidden:用戶選擇activity時,軟鍵盤總是被隱藏
【D】stateAlwaysHidden:當該Activity主窗口獲取焦點時,軟鍵盤也總是被隱藏的
【E】stateVisible:軟鍵盤通常是可見的
【F】stateAlwaysVisible:用戶選擇activity時,軟鍵盤總是顯示的狀態
【G】adjustUnspecified:默認設置,通常由系統自行決定是隱藏還是顯示
【H】adjustResize:該Activity總是調整屏幕的大小以便留出軟鍵盤的空間
【I】adjustPan:當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分
⑸ android editText 輸入法把選項卡頂上去了怎麼辦
在清單文件AndroidManifest.xml中修改acitivty的windowInputMode為adjustPan即可
windowInputMode有以下幾個取值
1.stateUnspecified
中文意思是未指定狀態,當我們沒有設置android:windowSoftInputMode屬性的時候,軟體默認採用的就是這種交互方式,系統會根據凱悔界面採取相應的軟鍵盤的顯示模式,比如,當界面上只有文本和按鈕的時候,軟鍵盤就不會自動彈出,因為沒有輸入的必要。
2.stateUnchanged
中文的意思就是狀態不改變的意思,我們應該怎麼理解這句話呢?其實很好理解,就是說,當前界面的軟鍵盤狀態,取決於上一個界面的軟鍵盤狀態。假如當前界面鍵盤是隱藏的,那麼跳轉之後的界面,軟鍵盤也是隱藏的;如果當前界面是顯示的,那麼跳轉之後的界面,軟冊橡鍵盤也是顯示狀態。
3.stateHidden
顧名思義,如果我們設置了這個屬性,那麼鍵盤狀態一定是隱藏的,不管上個界面什麼狀態,也不管當前界面有沒有輸入的需求,反正就是不顯示。因此,我們可以設置這個屬性,來控制軟鍵盤不自動的彈出。
4.stateAlwaysHidden
這個屬性也可以讓軟鍵盤隱藏
5.stateVisible
設置為這個屬性,可以將軟鍵盤召喚出來,即使在界面上沒有輸入框的情況下也可以強制出來。
6.stateAlwaysVisible
這個屬性也是可以將鍵盤召喚出來,但是與stateVisible屬性有小小的不同之處。舉個例子,當我們設置為stateVisible屬性,如果當前的界面鍵盤是顯示的,當我們點擊按鈕跳轉到下個界面的時候,軟鍵盤會因為輸入框失去焦點而隱藏起來,州孫旁當我們再次回到當前界面的時候,鍵盤這個時候是隱藏的。但是如果我們設置為stateAlwaysVisible,我們跳轉到下個界面,軟鍵盤還是隱藏的,但是當我們再次回來的時候,軟鍵盤是會顯示出來的。所以,這個Always就解釋了這個區別,不管什麼情況到達當前界面(正常跳轉或者是上一個界面被用戶返回),軟鍵盤都是顯示狀態。
7.adjustUnspecified
從這個屬性開始,就不是設置軟鍵盤的顯示與隱藏模式了,而是設置軟鍵盤與軟體的顯示內容之間的顯示關系。當沒有設置這個值的時候,這個選項也是默認的設置模式。在這中情況下,系統會根據界面選擇不同的模式。如果界面裡面有可以滾動的控制項,比如ScrowView,系統會減小可以滾動的界面的大小,從而保證即使軟鍵盤顯示出來了,也能夠看到所有的內容。如果布局裡面沒有滾動的控制項,那麼軟鍵盤可能就會蓋住一些內容,
8.adjustResize
這個屬性表示Activity的主窗口總是會被調整大小,從而保證軟鍵盤顯示空間。
9.adjustPan
如果設置為這個屬性,那麼Activity的屏幕大小並不會調整來保證軟鍵盤的空間,而是採取了另外一種策略,系統會通過布局的移動,來保證用戶要進行輸入的輸入框肯定在用戶的失業范圍裡面,從而讓用戶可以看到自己輸入的內容。
⑹ 安卓軟鍵盤彈出來將布局頂上去的解決方法有哪些
將Activity的屬性設置成 android:windowSoftInputMode="stateUnchangedadjustPan" 如果你是想改變你的布局,可以監帶團聽鍵旦襪盤的彈蠢遲橘出,然後重新布局
⑺ android怎麼設置軟鍵盤把組件頂起來
androidmanifast.xml中對應的activity中加上android:windowSoftInputMode="adjustResize"
⑻ Android 底部按鈕被軟鍵盤頂起問題解決
我們目前的項目是採用單 Activity 多 Fragment 的架構遲改模式, AndroidManifest.xml 內 MainActivity 的配置如下所示。
stateHidden
狀態隱藏,如果我們設置了這個屬性,鍵盤狀態就一定是隱藏的,不管上個界面是什麼狀態,也不管當前界面有沒有輸入的需求,就是不顯示軟鍵盤。
adjustResize
調整大小狀態,這個屬性表示 Activity 的主窗口總是會被調整大小來保證軟鍵盤的顯示空間。如果界面中有可滑動控制項,顯示效果跟 adjustUnspecified 顯示效果一樣;如果界面中沒有可滑動控制項,軟鍵盤可能會蓋住一些控制項(布局的位置不會發生變化,可能獲取了焦點的控制項被軟鍵盤蓋住)。
一般來說,我們的布局分為兩種
第一種布局是不會出現軟鍵盤把底部按鈕頂起的情況,首先軟鍵盤的打開實際上是一個 Dialog,而我們在配置文件內的 adjustResize 屬性是在頁面的根布局 decorView 的子 view 也就是一個線性布局內通過設置 paddingBottom = 軟鍵盤高度,這樣其實相當於把整個滾動布局的高度減少了,所以底部的按鈕也只是變為需要滾動才能看到。
第數虛二種情況通常為一個繼續按鈕始終處於頁面的底部,中間的內容可以滾動,當根布局的內邊距等於軟鍵盤高度時,底部按鈕就看起來像是被頂起。
1、監聽軟鍵盤的打開收起
2、修改 windowSoftInputMode
adjustPan
如果設置了這個屬性,當軟鍵盤彈出薯旦燃的時候,系統會通過布局的移動,來保證用戶要進行輸入的輸入框在用戶的視線范圍內。如果界面沒有可滑動控制項,顯示效果和 adjustUnspecified 效果一樣;如果界面有可滑動控制項,在軟鍵盤顯示的時候,可能會有一些內容顯示不出來。
資料借鑒
Android中Activity的android:windowSoftInputMode屬性
⑼ android 軟鍵盤怎麼把把頁面頂上去
解決方法,在mainfest.xml中,對那個Activity加:
<activityandroid:name=".activity.HomeActivity"android:windowSoftInputMode="adjustPan|stateHidden"></activity>
就不會把原來Activity的布局給頂上去了。
今天要做一個搜索功能,搜索界面採用AutoCompleteTextView做搜索條,然後下面用listview來顯示搜索結果,而我的主界面是在底部用tab做了一個主界面導航,其中有一個搜索按鈕,因為在搜索條中輸入文字的時候會彈出軟體盤,但是如果不做什麼設置的話,軟鍵盤彈出來的同時,會把我下面的tab導航給相應拉到屏幕的上面,界面顯示的扭曲啊,後來找到一種解決方帆敬稿法,在相應的activity中(比如我這是tab的activity,用的是adjustpan)添加
android:windowSoftInputMode這個屬態孝性,下面詳細說下這個屬性:
windowSoftInputMode屬性設置值說明。
<activityandroid:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible","adjustUnspecified",
"adjustResize", " …… >
</activity>
attributes:
android:windowSoftInputMode
活動的主窗口如何與包含屏幕上的軟鍵盤窗口交互。這個屬性的設置將會影響兩件事情
1>
軟鍵盤的狀態——是否它是隱藏或顯示——當活動
(Activity)成為用戶關注的焦點。
2>
活動的主窗口調整——是否減少活動主窗口大小以便騰出空間放軟鍵盤或是否當活動窗口的部分被軟鍵盤覆蓋時它的內容的當前焦點是可見的。
它的設置必須是下面列表中的一個值,或一個
」state…」值加一個
」adjust…」值的組合。在任一組設置多個值——多個
稿罩」state…」values,例如&
mdash有未定義的結果。各個值之間用
|分開。例如
:<activityandroid:windowSoftInputMode="stateVisible|adjustResize" . . .>
⑽ android 怎麼用代碼控制軟鍵盤彈出而不將界面頂上去
AndroidManifast中設置鏈廳要此功能的Activity添加屬性android:windowSoftInputMode="adjustPan",這樣軟鍵盤如差覆蓋到界面上。
android:windowSoftInputMode="adjustResize",渣喚皮這樣軟鍵盤彈出會擠壓界面