资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

android光标,手机光标app

Androidの EditText 光标始终保持在输入文本末尾

EditText 在设置添加文本内容时候,光标一般都在文本开头,如何一开始自动在文本末尾呢?

创新互联公司作为成都网站建设公司,专注网站建设、网站设计,有关成都企业网站定制方案、改版、费用等问题,行业涉及围栏护栏等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

监听光标移动事件,重写 onSelectionChanged(int selStart, int selEnd)即可,自定义一个EditText, 一劳永逸.

[img]

Android Cursor(光标)解析

SQLiteDatabase db = dataBaseHelper.getWritableDatabase();

Cursor cursor = db.rawQuery("select *from User",null);

1.光标的行数:int getCount()

2.当前光标的位置:int getPosition()

返回的值从零开始, 当第一次返回行集时游标将位于位置 -1,即第一行之前。在返回最后一行之后,对 next() 的另一个调用将使光标离开最后一个条目,位于 count() 的位置。

3.从当前位置应用的偏移量:boolean move(int offset)

将光标从当前位置向前或向后移动一个相对量。 正偏移向前移动,负偏移向后移动。 如果最终位置在结果集的边界之外,则结果位置将分别固定为 -1 或 count(),具体取决于该值是在集合的前端还是末尾。如果请求的目的地可达,此方法将返回 true,否则返回 false。

4.将光标移动到绝对位置:boolean moveToPosition(int position)

值的有效范围是 -1 = 位置 = 计数。如果请求目的地可达,此方法将返回 true,否则返回 false。

5.将光标移动到第一行:boolean moveToFirst()

6.将光标移动到最后一行:boolean moveToLast()

7.将光标移动到下一行:boolean moveToNext()

8.将光标移动到上一行:boolean moveToPrevious()

9.返回光标是否指向第一行:boolean isFirst()

10.返回光标是否指向最后一行:boolean isLast()

11.返回光标是否指向第一行之前的位置:boolean isBeforeFirst()

12.返回光标是否指向最后一行之后的位置:boolean isAfterLast()

13.给定列名的从零开始的列索引,如果列名不存在,则返回 -1:int getColumnIndex(String columnName)

14.给定列名的从零开始的索引,如果该列不存在则抛出非法参数异常:int getColumnIndexOrThrow(String columnName) throws IllegalArgumentException

15.给定的从零开始的列索引处的列名:String getColumnName(int columnIndex)

16.返回一个字符串数组,其中按列在结果中的顺序保存结果集中所有列的名称。:String[] getColumnNames()

17.返回总列数:int getColumnCount()

18.各类型返回值

(1)以字节数组的形式返回请求列的值:byte[] getBlob(int columnIndex)

(2)以字符串形式返回请求列的值:String getString(int columnIndex)

(3)以整数形式返回请求列的值:int getInt(int columnIndex)

(4)以 long 形式返回请求列的值:long getLong(int columnIndex)

(5)以浮点数形式返回请求列的值:float getFloat(int columnIndex)

(6)以双精度形式返回请求列的值:double getDouble(int columnIndex)

(7)返回给定列值的数据类型:int getType(int columnIndex)

(8)列值是否为空:boolean isNull(int columnIndex)

(9)以短形式返回请求列的值:short getShort(int columnIndex)

19.检索请求的列文本并将其存储在提供的缓冲区中:void copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)

20.关闭游标:void close()

21.游标是否关闭:boolean isClosed()

22.注册一个观察者,当支持此游标的内容发生变化时调用该观察者:void registerContentObserver(ContentObserver observer)

23.销毁注册的观察者:void unregisterContentObserver(ContentObserver observer)

24.注册一个观察者,当数据集的内容发生变化时被调用:void registerDataSetObserver(DataSetObserver observer)

25.销毁注册的观察者:void unregisterDataSetObserver(DataSetObserver observer)

26.注册以查看内容 URI 的更改。这可以是特定数据行的 URI,也可以是内容类型的通用URI:void setNotificationUri(ContentResolver cr, Uri uri)

cr是上下文,uri是需要观看的内容

27.是否所有光标移动都应导致调用 onMove():boolean getWantsAllOnMoveCalls()

只有在此方法返回 true 时,才会跨进程调用 onMove()

28.返回一组额外的值:Bundle getExtras()

29.光标用户与光标通信的带外方式:Bundle respond(Bundle extras)

30.设置 Bundle 返回的getExtras():void setExtras(Bundle extras)

如何定位android系统中光标的位置

Android中有很多可编辑的弹出框,其中有些是让我们来修改其中的字符,这时光标位置定位在哪里呢?

刚刚解了一个bug是关于这个光标的位置的,似乎Android原生中这种情况是把光标定位到字符串的最前面。需求是将光标定位到字符的最后面。

修改的地方是TextView这个控件,因为EditText也是继承了TextView。在setText方法中有:

1 private void setText(CharSequence text, BufferType type,

2 boolean notifyBefore, int oldlen) {

3 ……

4 if (text instanceof Spannable) {

5 Spannable sp = (Spannable) text;

6

7 ……

8 if (mMovement != null) {

9 mMovement.initialize(this, (Spannable) text);

10 //文本是不是Editable的。

11 if(this instanceof Editable)

12 //设定光标位置

13 Selection.setSelection((Spannable)text, text.length());

14

15 ……

16 }

从红色代码中可以看出,google是要光标处在缺省文本的末端,但是,log发现 (this instanceof Editable)非真,也就是说Selection.setSelection((Spannable)text, text.length());并不会被执行。

1 Log.d("TextView", "(type == BufferType.EDITABLE)="+(type == BufferType.EDITABLE));

2 if(type == BufferType.EDITABLE){

3 Log.d("TextView","Format text.Set cursor to the end ");

4 Selection.setSelection((Spannable)text, text.length());

5 }

这个样修改后即可。

在编写应用的时候,如果我们要将光标定位到某个位置,可以采用下面的方法:

1 CharSequence text = editText.getText();

2 //Debug.asserts(text instanceof Spannable);

3 if (text instanceof Spannable) {

4 Spannable spanText = (Spannable)text;

5 Selection.setSelection(spanText, text.length());

6 }

其中红色标记的代码为你想要设置的位置,此处是设置到文本末尾。

Android 设置EditText的光标样式

如图:

在 /res/drawable 文件夹下创建 edit_cursor_color.xml :

布局文件中设置 EditText 的 textCursorDrawable 属性为 edit_cursor_color :

Android安卓文字编辑时如何精确移动光标?

在安卓手机上编辑文档,虚拟键盘状态下输入文字时如何移动光标啊?很多用安卓手机的人很困惑。解决方法:1.用有自带四向光标移动键,如触宝输入法,讯飞语音输入法。

2.我用的是MOTO自带的输入法,长按会出现放大镜,移动放大镜就能移动光标。不过要注意切换到非手写状态,因为手写状态是全屏,不一定好用。3.三星的话,点一下就会有圆形移杆的让你移动。


当前题目:android光标,手机光标app
当前URL:http://cdkjz.cn/article/dsopdep.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220