java - EditText、OnTouchListener 和 setSelection 在第一次触摸时不起作用

标签 java android user-interface android-edittext

我有以下代码,每次触摸我的“redTime”EditText 时都会触发。

redTime.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.i("click", "onMtouch");
            redTime.setSelection(redTime.getText().length());
            return false;
        }
    });

它的目的是在每次触摸时将光标保持在 EditText 的右侧。问题是包含“setSelection”方法的行在第一次触摸控件时不起作用。也就是说,如果另一个控件有焦点,并且我第一次触摸“redTime”控件,则会触发该方法,但光标仍停留在我触摸的位置(不是右侧)。

我怎么知道监听器触发了? “Log.i”调用有效,但光标没有变化。我怀疑“setSelection”调用有效,但后来的一些事件否定了它。

我尝试了一些东西。我尝试通过在监听器中返回 TRUE 来使用事件。没用。我尝试在 OnTouchListener 和 OnFocusChanged 中重复调用“setSelection”。还是不行。

我差点忘记了。这是相关控件的 XML。

<EditText
            android:id="@+id/redEditText"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:ellipsize="end"
            android:gravity="right"
            android:inputType="time"
            android:text="@string/zeroTime"
            android:textColor="#ff0000"
            android:textSize="32sp" >
        </EditText>

最佳答案

我最近遇到了这个问题,但无法解决任何问题,所以最后这样做了:

    setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            postDelayed(new Runnable() {
                @Override
                public void run() {
                    setSelection(getText().length());
                }
            }, 50);
            return false;
        }
    });

关于java - EditText、OnTouchListener 和 setSelection 在第一次触摸时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24335853/

相关文章:

java - ZeroMQ 两个 PUB-SUB 代理

java - 初始化 Spring 上下文时 org.springframework.asm.ClassReader 出现 IllegalArgumentException

java - Android Studio 和 JDK

带有额外信息的 Android 应用内购买

android - DataBinderMapperImpl 找不到 ActivityLoginBinding 的符号

java - 如何在 Netbeans 表单编辑器中更改方法签名?

java - 初始化后如何更改JTable?

java - JUnit 中的实例变量

android - 选择 EditText 时如何显示软键盘?

javascript - 文本区域的奇怪行为