gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:38:23 28 4
gpt4 key购买 nike

我有以下代码,每次触摸我的“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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com