Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android WebView 輸入框鍵盤不彈出

Android WebView 輸入框鍵盤不彈出

編輯:關於Android編程

問題

在Android中使用內嵌的WebView加載HTML網頁時,如果html頁面中存在輸入框。那麼在有些手機設備中,當輸入框獲取焦點時,系統輸入法鍵盤無法正確彈出,從而無法完成正常的輸入要求
在做APP時,自己也遇到了這個問題,以下是自己解決的方法,有可能不適合大家所遇到的情況,但值得借鑒~

WebView設置問題

有些時候我們設計的html頁面並不能夠很好的適應WebView,尤其我們的html頁面是為PC浏覽器設計的時候,當使用WebView來加載時,界面很可能會發生錯亂,當input輸入框被其他元素(例如:div)覆蓋,即使input能夠顯示和選中,但輸入法依然不會彈出。在這種情況下我們能做到的只有
1、WebView.getSettings().setUseWideViewPort(true),使WebView能自適應手機屏幕大小,自由縮放,使得WebView和PC浏覽器更相似,避免界面布局錯亂,減少問題出現的概率 2、為html提供移動版本

代碼失誤

有些時候我們需要自定義WebView來滿足特定的需求,比如我們想為WebView添加一個加載進度條,來統一WebView進度條的顯示,那麼就有可能出現如下的代碼 public class ProgressBarWebView extends WebView{

public ProgressBarWebView(Context context) {
this(context, null);
}
public ProgressBarWebView(Context context, AttributeSet attrs){
this(context, attrs, 0);
}
public ProgressBarWebView(Context context, AttributeSet attrs, int defStyle){
super(context, attrs, defStyle);
// TODO
// your code
}

}
這段代碼會有什麼問題呢?在使用ProgressBarWebView的時候,如果在layout中不指定style的話,那麼將會進入到
public ProgressBarWebView(Context context, AttributeSet attrs){
this(context, attrs, 0);
} 構造方法中,這裡我們指定為0,如果去查看Android WebView的源代碼,是如下定義的
public \WebView(Context context, AttributeSet attrs) {
     this(context, attrs, com.android.internal.R.attr.webViewStyle);
}
必須為WebView附加com.android.internal.R.attr.webViewStyle樣式,不然WebView不能正常的工作

總結

以上就是自己總結的一些方法,希望對大家有幫助~




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved