刚学Android,EditText的光标位置怎么调??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚学Android,EditText的光标位置怎么调??相关的知识,希望对你有一定的参考价值。

参考技术A 这个只要设置EditText的gravity属性(即它的子View的输出位置)为top即可,如果你的EditText有内容,则通过调用它的setSelectionStart和setSelectionEnd方法设置光标具体在哪个字符之前本回答被提问者采纳

Android EditText中字符大小与光标位置

      最近的工作需要自己写一个数字键盘用于数字的输入,采用的方法是自定义一个  Dialog,然后将数字显示在EditText中。在处理过程中遇到遇到一个问题,在EditText的点击事件中屏蔽系统键盘并弹出自定义的Dialog,无法获取用户选中的字符即Selection,造成的问题现象是用户不能选中中间某个位置修改输入值。

  为了解决这一问题,需要在EditText的点击事件中获取Selection。

  解决方法是:1、在EditText点击事件中获取用户点击位置,主要取其中的touchX值(这里主要讨论文字方向为横排的情况);

        2、获取EditText的内边距paddingLeft值(包含左内边距和右内边距,此处仅讨论左对齐情况);

        3、获取文字大小textSize(此值得大小与XML文件中设置的大小和单位有关系,最好使用sp。使用getTextSize方法得到的值是已经经过系统字体大小加权后的值,但不是实际显示的字体大小,实际字体大小应该通过此值乘以textScaleX得到。默认情况下得到的单位为px,其他情况可以使用getTextSize重载的另一个方法,根据单位返回相应的值);

        4、获取EditText的textScaleX(这个值用于计算字体显示的实际大小);

  获取以上值之后就可以来计算字符的实际大小。这里说明一下:汉字、数字、大写字母、小写字母显示大小是不同的,其中汉字大小为textSize*textScaleX,数字大小为textSize*textScaleX/2,字母的大小与具体字母有关。此处仅使用数字来讨论。

  数字大小计算公式:numSize = textSize*textScaleX/2*1.1;//此处乘以1.1的作用是加上数字之间的间隔距离,通过实际测量计算,字符之间间隔是字符大小的0.1倍

  光标位置计算: selection = (int)((touchX - paddingLeft)/(numSize ));//此处直接取整,可将光标定位到第一个字符之前

  另外应检查selection 是否超出EditText中实际字符长度或小于0,并进行相应处理。

以上是关于刚学Android,EditText的光标位置怎么调??的主要内容,如果未能解决你的问题,请参考以下文章

Android EditText中字符大小与光标位置

Android中的EditText中,输入信息时,怎么能让光标停靠在输入的信息的右侧而不是左侧呢?

Android EidtText 光标的使用和设置

Android将光标从一个EditText移动到另一个EditText?

EditText不显示光标怎么解决

android开发,edittext监听跳转的时候会先换行,然后光标再跳入下一个edittext,这是怎么回事?