【Android】Android部分问题记录

1.EditText不显示光标

 开发的时候遇到有部分手机,小米系列以及华为部分手机不显示光标。

 设置EditText属性 

1    android:textCursorDrawable="@null"
2    android:cursorVisible="true"
View Code

 可参考,http://stackoverflow.com/questions/15093758/edittext-cursor-is-invisible-in-android-4-0第一个回答。

 附上我自己封装的一个方法

 

 1 private final static String TAG = "EditTextCompat";
 2 
 3     /**
 4      * 设置光标可见 <br/>
 5      * 此处为了解决部分手机(如小米、华为)无法显示光标的问题,由于编译环境为2.3,导致部分函数无法调用,此处使用反射调用<br/>
 6      */
 7     public static void setCursorVisible(EditText editText, Context context) {
 8         editText.setCursorVisible(true);
 9         // sdk
10         // 对应关系表,见http://developer.android.com/guide/topics/manifest/uses-sdk-element.html
11         if (android.os.Build.VERSION.SDK_INT >= 12) {// Android 3.1.x  API12
12                                                         // HONEYCOMB_MR1
13             String filedNameString = "mCursorDrawableRes";
14             // mCursorDrawableRes
15             Class<? extends EditText> editTextClass = editText.getClass();
16             Class<? extends TextView> textViewClass = null;
17             if (editTextClass != null) {
18                 textViewClass = (Class<? extends TextView>) editTextClass
19                         .getSuperclass();
20             }
21             if (textViewClass != null) {
22                 Field mCursorDrawableField = null;
23                 try {
24                     mCursorDrawableField = textViewClass
25                             .getDeclaredField(filedNameString);
26                 } catch (NoSuchFieldException e) {
27                     // TODO Auto-generated catch block
28                     Log.i(TAG, "NoSuchFieldException");
29                     e.printStackTrace();
30                 }
31                 if (mCursorDrawableField != null) {
32                     mCursorDrawableField.setAccessible(true);
33                     try {
34                         mCursorDrawableField.set(editText, 0);
35 
36                     } catch (IllegalArgumentException e) {
37                         Log.i(TAG, "IllegalArgumentException");
38                         e.printStackTrace();
39                     } catch (NotFoundException e) {
40                         Log.i(TAG, "NotFoundException");
41                         e.printStackTrace();
42                     } catch (IllegalAccessException e) {
43                         Log.i(TAG, "IllegalAccessException");
44                         e.printStackTrace();
45                     }
46                 }
47 
48             }
49         }
50     }
51 }
View Code

 

 2.AutoCompleteTextView在部分手机(如联想a860e)显示黑条。

  见图

  

  解决方案:在themes.xml设置一个主题,设置它的android:dropDownListViewStyle属性。

1  <style name="search_theme" parent="android:style/Theme.NoTitleBar">
2         <item name="android:dropDownListViewStyle">@style/widget_dropdownlistview</item>
3     </style>
View Code

  在styles.xml中定义下面字段。

1   <style name="widget_dropdownlistview" parent="android:style/Widget.Holo.ListView.DropDown">
2         <item name="android:scrollbars">none</item>
3         <item name="android:divider">@color/white</item>
4     </style>
View Code

  对需要用到AutoCompleteTextView的Activity设置主题(AndroidManifest.xml中设置)。

  然后样式就OK了。

  如图

  

可参考http://www.apkbus.com/android-126131-1-1.html

3.Dialog在部分手机上显示黑条

  设置

  

1  <item name="android:windowContentOverlay">@null</item>
View Code

 

  可参考。http://www.cnblogs.com/kaima/archive/2011/07/29/2121457.html

 

posted @ 2014-01-13 11:43  云海之巅  阅读(504)  评论(0编辑  收藏  举报