代码改变世界

EditText小记

2014-04-26 00:27  soar.  阅读(1935)  评论(0编辑  收藏  举报

一、android:textCursorDrawable

  今天在小米2s(Android4.1.1)上测试app时,发现所有输入框都没了光标。其实是因为光标默认为白色,而我将EditText的背景置为透明,EditText外层容器背景设置为圆角白色背景。这样EditText的背景就是白色,和光标一样,所以就看不到光标。

  最后用textCursorDrawable属性解决,可以用他来将光标设置为指定的图片,当设置为@null时,光标颜色会和文本颜色保持一致。但这个属性只支持3.1+。

  http://developer.android.com/about/versions/android-3.1.html

      • Drawable text cursor

        • You can now specify a drawable to use as the text cursor using the new resource attribute textCursorDrawable.

  另外还可以通过android:cursorVisible属性来控制光标的显示与隐藏。

 

二、EditText软键盘控制

  使用EditText默认设置时,屏幕横屏,弹出的软键盘会占满整个界面。可以通过android:imeOptions="flagNoExtractUi"来设置。android:imeOptions还可以设置软键盘右下角按键的显示内容,默认是回车键。比较奇怪的是如下面设置右下角的按键为搜索时,必须要和android:singleLine="true"一起用才能生效。这里做个记号,以后有时间再搞清楚。

  android:imeOptions="flagNoExtractUi|actionSearch"

 

三、关于软键盘对UI的影响

  可在配置文件中设置Activity的android: windowSoftInputMode属性,来改变软键盘弹出对界面的影响。其中adjustPan属性作用是软键盘弹出后如果遮挡住EditText,界面整体会上移(这样界面上方有一部分就会移到屏幕外不可见);反之,界面不会变化,软键盘会覆盖界面下方一部分。而另一个属性adjustResize则总是会改变界面大小,给软键盘腾出位置。

  个人认为,实际开发中,应该根据界面的需要动态设置windowSoftInputMode属性来满足界面制作要求,如果windowSoftInputMode属性的作用无法达到界面制作要求,再去采纳一些“奇淫”技巧来解决。

 

参考文章:

  http://blog.csdn.net/wf_zeng/article/details/9339431

  http://developer.android.com/guide/topics/manifest/activity-element.html#exported

  http://blog.csdn.net/stonesharp/article/details/7648384

  http://blog.csdn.net/chenshijun0101/article/details/7008632