Android 軟鍵盤蓋住輸入框的問題

當在Android的layout設計裏面如果輸入框過多,則在輸入彈出軟鍵盤的時候,下面的輸入框會有一部分被軟件盤擋住,從而不能獲取焦點輸入。

解決辦法:

方法一:在你的activity中的oncreate中setContentView之前寫上這個代碼getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

方法二:在項目的AndroidManifest.xml文件中界面對應的里加入android:windowSoftInputMode=”stateVisible|adjustResize”,這樣會讓屏幕整體上移。如果加上的是

            android:windowSoftInputMode="adjustPan"這樣鍵盤就會覆蓋屏幕。

方法三:把頂級的layout替換成ScrollView,或者說在頂級的Layout上面再加一層ScrollView的封裝。這樣就會把軟鍵盤和輸入框一起滾動了,軟鍵盤會一直處於底部。

注:方法一和二應該是同一種方法,不過一個是在代碼裏實現一個是在xml文件裏實現。可能會應爲1.5和之前的版本不支持該方法。但是方法三是肯定沒有問題的。

文主要介紹Android中如何解決輸入法鍵盤和activity頁面遮擋的問題。

總結:

不希望遮擋設置activity屬性android:windowSoftInputMode=”adjustPan”

希望動態調整高度android:windowSoftInputMode=”adjustResize”

問題:

我原來的問題是,對於騰訊微博的OAuth驗證webView,彈出軟鍵盤後,輸入框上移就看不到輸入框了,後發現Webview放到了ScrollView中,將ScrollView改爲LinearLayout問題解決了,不會在彈出軟鍵盤後大幅滾動。不過下面還是詳細介紹下軟鍵盤和activity頁面遮擋的問題。

詳細:

通常情況下如果我們在一個輸入框輸入內容,輸入法鍵盤彈出時,activity自動設置高度,相當於在activity向上滾動了添加了輸入法鍵盤的高度。但有時可能淹沒當前的輸入框,如果希望輸入法鍵盤彈出時不自動向上擠壓activity,在activty中設置屬性android:windowSoftInputMode=”adjustPan”即可,如下:

<activity android:name="testActivity"  
      android:windowSoftInputMode="adjustPan">  

設置屬性爲android:windowSoftInputMode=”adjustResize”即可自動調整高度。

屬性stateVisible表示默認顯示輸入法鍵盤,其他屬性見:android:windowSoftInputMode

adjustPan同樣存在問題,即可能需要關閉軟鍵盤,定位被擋住的輸入框,我希望的是介於adjustPan和adjustResize之間的解決方案,即軟鍵盤會對activity有一定擠壓,但是焦點所在輸入框始終會顯示在屏幕上,有會的朋友歡迎留言分享,個人覺得可能的解決方案是new一個LinearLayout,重寫其中的

protected void onSizeChanged(int w, int h, int oldw, int oldh)  

方法,使得h參數動態變化達到效果,但較耗時,暫不想嘗試了。

該博文轉載自:http://blog.csdn.net/stonesharp/article/details/7648384

發佈了20 篇原創文章 · 獲贊 10 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章