[Phonegap+Sencha Touch] 移动开发22、安卓4.0.X的webview或自带浏览器中,去除输入框外面的蓝色边框

来源:互联网 发布:印度药品 知乎 编辑:程序博客网 时间:2024/06/06 09:08

这个css的方法去除边框有副作用,还是废弃掉吧。需要的请看最下面的办法。

安卓4.0.X中,有焦点的输入框是这样的,


蓝色边框好丑,去除的办法是,加上下面的css:

a:focus,input:focus,textarea:focus {
    -webkit-tap-highlight-color: rgba(0,0,0,0);
    -webkit-user-modify: read-write-plaintext-only;
}


下面是去除后的效果:



上面的css办法有副作用,导致输入法不再能够输入多个字符,比如用中文输入法打“我们”,进入文本框的就只有“我”。本来是google到的解决办法,但是国外大部分使用字母的国家是无所谓,咱们用中文就不能忍受了。


另一个办法:

打开你phonegap项目中的文件

\platforms\android\CordovaLib\src\org\apache\cordova\CordovaActivity.java

文件开头引入这几个包

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import android.view.ViewGroup.OnHierarchyChangeListener;  
  2. import android.view.inputmethod.InputMethodManager;  
  3. import android.widget.AutoCompleteTextView;  
  4. import android.text.InputType;  
  5. import android.os.Build;  
修改311行的public void init() 方法,加上下面的代码

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. public void init() {  
  2.     CordovaWebView webView = makeWebView();  
  3.     //代码开始  
  4.     if (Build.VERSION.SDK_INT == Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {//4.0.3  
  5.         webView.setOnHierarchyChangeListener(new OnHierarchyChangeListener() {  
  6.   
  7.             @Override  
  8.             public void onChildViewRemoved(View parent, View child) {}  
  9.   
  10.             @Override  
  11.             public void onChildViewAdded(View parent, View child) {  
  12.                 final AutoCompleteTextView myWebTextView;  
  13.                 if( child.getClass().getName().equals("android.webkit.WebTextView")){  
  14.   
  15.                     myWebTextView =(AutoCompleteTextView) child;  
  16.   
  17.                     myWebTextView.getHandler().post(new Runnable() {  
  18.                         @Override  
  19.                         public void run() {  
  20.                             myWebTextView.setBackgroundColor(Color.TRANSPARENT);  
  21.                             //myWebTextView.setCursorVisible(false);  
  22.                             myWebTextView.setTextColor(Color.TRANSPARENT);  
  23.   
  24.                             //set lines to 0 because sethighlightcolor does not work  
  25.                             myWebTextView.setLines(0);  
  26.   
  27.                             myWebTextView.setInputType(InputType.TYPE_NULL);  
  28.                             myWebTextView.setFocusable(true);  
  29.                             myWebTextView.setFocusableInTouchMode(true);  
  30.   
  31.                             if(myWebTextView.hasFocus())  
  32.                                 myWebTextView.clearFocus()  
  33.   
  34.                             //sometimes the keyboard doesn't show up by just requestFocus,so i have to force it by showSoftInput  
  35.                             InputMethodManager mgr = (InputMethodManager) CordovaActivity.this.getSystemService(Context.INPUT_METHOD_SERVICE);  
  36.                             myWebTextView.requestFocus();  
  37.                             mgr.showSoftInput(myWebTextView, InputMethodManager.SHOW_FORCED);  
  38.                         }  
  39.                     });  
  40.                 }  
  41.             }  
  42.         });  
  43.     }  
  44.     //代码结束  
  45.     this.init(webView, makeWebViewClient(webView), makeChromeClient(webView));  
  46. }  



效果就是这样的


光标会有2个,看起来有重影的样子,不过还是可以接受的。


一劳永逸的话。你可以改下面这个文件

C:\Users\用户名\.cordova\lib\android\cordova\3.4.0\framework\src\org\apache\cordova\CordovaActivity.java

这样,以后创建的phonegap项目都会有这段代码了

0 0
原创粉丝点击