EditText(第1章)-游标位置和样式

1. EditText是什么?

既然是EditText的第一篇,当然应该明白EditText是干嘛的,了解一个控件说明,最好的方法就是先看看源码的注释:

EditText的设计初衷:

This is supposed to be a *very* thin veneer over TextView.Do not make any changes here that do anything that a TextView with a key listener and a movement method wouldn’t do!

译:它应该是在TextView的外观上做了一些特别细小的改动,不能改变任何TextView的关键监听和移动的方法。

EditText的说明:

EditText is a thin veneer over TextView that configures itself to be editable.

译:EditText是在TextView的外观配置上做了一些细小的改动,使其可以编辑。

也可以这么说,EditText就是一个可以编辑的TextView。

总结:EditText是一个可编辑的文本控件。

2.EditText的游标

上面说了EditText是在Text的基础上做了一些细小的改动,那么我们看看改动了什么:

下面是一个简单的布局:

<android.support.v7.widget.AppCompatEditText

       android:layout_width=”match_parent”

       android:layout_height=”wrap_content”

       android:hint=”随便输”/>

特别说明:这里的AppCompatEditText是5.0以后为了兼容低版本,统一样式(文字颜色,小大等等)而出现的,当然AppCompatEdit是继承于EditText的,所以使用的方式是一样的,推荐使用。

效果图:

《EditText(第1章)-游标位置和样式》 EditText的样式

可以明显的看出,有个一闪一闪的竖线-它就是游标了。我们知道只有在用户点击了输入框的时候,游标才会出现。那么为什么我们一进来就可以看到这种效果呢?下面看看源码的style:

《EditText(第1章)-游标位置和样式》 Edit的Style

看了这个我们明白了:EditText会自动获取焦点,有焦点的时候游标才会闪烁

前面几个属性相信大家都可看懂,最后2个属性是在API Level 23(6.0的手机)才能使用的,不是很了解。

3.改变游标的颜色

上面的展示图的项目是Android studio工程,细心的你一定会发现主题Theme中的colorAccent属性的颜色正是我们看到的EditText的游标颜色。改改看看:

<item name=”colorAccent”>#000000</item>//改为黑色比较明显

效果:

《EditText(第1章)-游标位置和样式》 改变游标的颜色

颜色是改变了,可是我只想该游标应该怎么办呢?

我们去xml找找方法,输入一个cursor看看有什么相关属性,找到这样一个方法:

android:textCursorDrawable=”@mipmap/ic_launcher”

这里我们设置一个机器人的图片看看效果:

《EditText(第1章)-游标位置和样式》 改变游标的样式

虽然实现了效果不过也是太丑了点,既然是传入一个图片,那么我们就可以使用Shape图片了

《EditText(第1章)-游标位置和样式》 简单的Drawable文件

效果:

《EditText(第1章)-游标位置和样式》 改变游标的颜色

这个效果还是可以的,相信到了这里,你已经可以修改游标的样式和颜色了。

特别说明:

设置游标的颜色和hint文字提示的颜色一致:

android:textCursorDrawable=”@null”

如果你对EditText的样式还是不满意:

设置背景(这里就不演示了):

android:background=””//你可以随心所欲的改

4.改变游标的位置

有时候我们在项目会有这样的需求:进入页面的时候默认给予了文字不需要用户重复输入,只需要在后面补充即可,比如输入网址的时候

《EditText(第1章)-游标位置和样式》 需求图片

因为默认的游标位置是在左侧,这时候我们就需要调整游标的位置了。

设置光标在右侧:

方法1:

etUrl.setSelection(etUrl.getText().length());

方法2:(就是方法1的底层方法)

Editable etext = etUrl.getText();

Selection.setSelection(etext, etext.length());

5.总结

通过这个文章我们可以知道

1.游标的样式和颜色以及位置如何修改

这是EditText系列的第一篇之后会慢慢总结有关EditText的知识。如果有相关知识,欢迎大家简信分享给我,多谢。

第二章:EditText(第2章)-对hint进行整容

    原文作者:积木Blocks
    原文地址: https://www.jianshu.com/p/660e93e1064f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞