當在A(yíng)ndroid的layout設計里面如果輸入框過(guò)多,則在輸入彈出軟鍵盤(pán)的時(shí)候,下面的輸入框會(huì )有一部分被軟件盤(pán)擋住,從而不能獲取焦點(diǎn)輸入。
解決辦法:
方法一:在你的activity中的oncreate中setContentView之前寫(xiě)上這個(gè)代碼getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
方法二:在項目的AndroidManifest.xml文件中界面對應的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",這樣會(huì )讓屏幕整體上移。如果加上的是
android:windowSoftInputMode="adjustPan"這樣鍵盤(pán)就會(huì )覆蓋屏幕。
方法三:把頂級的layout替換成ScrollView,或者說(shuō)在頂級的Layout上面再加一層ScrollView的封裝。這樣就會(huì )把軟鍵盤(pán)和輸入框一起滾動(dòng)了,軟鍵盤(pán)會(huì )一直處于底部。
注:方法一和二應該是同一種方法,不過(guò)一個(gè)是在代碼里實(shí)現一個(gè)是在xml文件里實(shí)現??赡軙?huì )應為1.5和之前的版本不支持該方法。但是方法三是肯定沒(méi)有問(wèn)題的。
文主要介紹Android中如何解決輸入法鍵盤(pán)和activity頁(yè)面遮擋的問(wèn)題。
總結:
不希望遮擋設置activity屬性android:windowSoftInputMode="adjustPan"
希望動(dòng)態(tài)調整高度android:windowSoftInputMode="adjustResize"
問(wèn)題:
我原來(lái)的問(wèn)題是,對于騰訊微博的OAuth驗證webView,彈出軟鍵盤(pán)后,輸入框上移就看不到輸入框了,后發(fā)現Webview放到了ScrollView中,將ScrollView改為L(cháng)inearLayout問(wèn)題解決了,不會(huì )在彈出軟鍵盤(pán)后大幅滾動(dòng)。不過(guò)下面還是詳細介紹下軟鍵盤(pán)和activity頁(yè)面遮擋的問(wèn)題。
詳細:
通常情況下如果我們在一個(gè)輸入框輸入內容,輸入法鍵盤(pán)彈出時(shí),activity自動(dòng)設置高度,相當于在activity向上滾動(dòng)了添加了輸入法鍵盤(pán)的高度。但有時(shí)可能淹沒(méi)當前的輸入框,如果希望輸入法鍵盤(pán)彈出時(shí)不自動(dòng)向上擠壓activity,在activty中設置屬性android:windowSoftInputMode="adjustPan"即可,如下:
設置屬性為android:windowSoftInputMode="adjustResize"即可自動(dòng)調整高度。
屬性stateVisible表示默認顯示輸入法鍵盤(pán),其他屬性見(jiàn):android:windowSoftInputMode
adjustPan同樣存在問(wèn)題,即可能需要關(guān)閉軟鍵盤(pán),定位被擋住的輸入框,我希望的是介于adjustPan和adjustResize之間的解決方案,即軟鍵盤(pán)會(huì )對activity有一定擠壓,但是焦點(diǎn)所在輸入框始終會(huì )顯示在屏幕上,有會(huì )的朋友歡迎留言分享,個(gè)人覺(jué)得可能的解決方案是new一個(gè)LinearLayout,重寫(xiě)其中的
方法,使得h參數動(dòng)態(tài)變化達到效果,但較耗時(shí),暫不想嘗試了。
聯(lián)系客服