getSelectionStart()在android中不起作用

时间:2014-03-04 15:06:30

标签: java android android-edittext

我想在用户点击EditText(触摸)时启动EditText选择 我这样做了代码:

int startIndex = txtMean.getSelectionStart();

这总是返回0;

和EditText xml代码:

<EditText
                android:id="@+id/txtMean"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@null"
                android:clickable="true"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:hint=""
                android:inputType="textMultiLine"
                android:scrollbars="none" />

我的代码在android 2. *中工作,但在4。*

中不起作用

1 个答案:

答案 0 :(得分:0)

  txtMean.getSelectionStart();

getSelectionStart与用户的上次触摸或点击本身无关。它涉及屏幕上的文本选择。默认情况下,当用户执行长按时,文本句柄将出现,并允许用户展开突出显示的文本选择。这是引用选择的突出显示文本,不一定是用户上次触摸的位置。

当用户进行文本选择时,它会突出显示,因为EditText会将SelectionSpan应用于字符序列,而getSelectionStart将返回此范围的起始值。

更新,解决方案帮助:

@Override
public boolean onTouchEvent(MotionEvent event) {

  // this = EditText;
  // will give you the position of the nearest chracter.    
  int offset = this.getOffsetForPosition(event.getX(), event.getY());