【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)显示黑条。

  见图

  【Android】Android部分问题记录

  解决方案:在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了。

  如图

  【Android】Android部分问题记录

可参考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

 

你可能感兴趣的:(android)