sách gpt4 ai đã đi

EditText, OnTouchListener và setSelection không hoạt động khi chạm lần đầu

In lại Tác giả: Space Dog Thời gian cập nhật: 2023-10-29 15:38:23 28 4
mua khóa gpt4 Nike

Tôi có đoạn mã sau đây sẽ kích hoạt mỗi khi EditText "redTime" của tôi được chạm vào.

redTime.setOnTouchListener(mới OnTouchListener() {

@Ghi đè
public boolean onTouch(View v, sự kiện MotionEvent) {
Log.i("nhấp chuột", "onMtouch");
redTime.setSelection(redTime.getText().length());
trả về false;
}
});

Mục đích của nó là giữ con trỏ ở bên phải EditText mỗi khi chạm. Vấn đề là dòng chứa phương thức "setSelection" không hoạt động khi chạm vào nút điều khiển lần đầu tiên. Nghĩa là, nếu một điều khiển khác được chú ý và tôi chạm vào điều khiển "redTime" lần đầu tiên, phương thức này sẽ được kích hoạt, nhưng con trỏ vẫn giữ nguyên vị trí tôi chạm vào (không phải bên phải).

Làm sao tôi biết người nghe đã bị sa thải? Lệnh gọi "Log.i" hoạt động, nhưng con trỏ không thay đổi. Tôi nghi ngờ rằng lệnh gọi "setSelection" hoạt động, nhưng một số sự kiện tiếp theo lại phủ nhận nó.

Tôi đã thử một vài cách. Tôi đã thử sử dụng sự kiện bằng cách trả về TRUE trong trình lắng nghe. Vô ích thôi. Tôi đã thử gọi "setSelection" nhiều lần trong OnTouchListener và OnFocusChanged. Vẫn không được.

Tôi gần quên mất. Sau đây là XML cho phần điều khiển đang đề cập.


android:id="@+id/redEditText"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:ellipsize="kết thúc"
android:gravity="phải"
android:inputType="thời gian"
android:text="@string/zeroTime"
android:textColor="#ff0000"
android:textSize="32sp" >

1 Câu trả lời

Gần đây tôi gặp phải vấn đề này và không thể giải quyết được nên tôi đã làm như sau:

    thiết lậpOnTouchListener(mới OnTouchListener() {
@Ghi đè
public boolean onTouch(View v, sự kiện MotionEvent) {
postDelayed(mới Runnable() {
@Ghi đè
công khai void run() {
setSelection(getText().length());
}
}, 50);
trả về false;
}
});

Liên quan đến java - EditText, OnTouchListener và setSelection không hoạt động khi chạm lần đầu, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/24335853/

28 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com