Có ai biết cách tắt con trỏ nhấp nháy trong EditText
chế độ xem không?
Có ai biết cách tắt con trỏ nhấp nháy trong EditText
chế độ xem không?
Câu trả lời:
Bạn có thể sử dụng thuộc tính xml android:cursorVisible="false"
hoặc hàm java setCursorVisible(false)
.
Giải pháp hoàn hảo đi xa hơn đến mục tiêu
Mục tiêu: Vô hiệu hóa con trỏ nhấp nháy khi EditText
không được lấy nét và kích hoạt con trỏ nhấp nháy khi EditText
đang ở tiêu cự. Bên dưới cũng mở bàn phím khi EditText
được nhấp và ẩn bàn phím khi bạn nhấn xong trong bàn phím.
1) Đặt trong xml của bạn dưới EditText
:
android:cursorVisible="false"
2) Đặt onClickListener:
iEditText.setOnClickListener(editTextClickListener);
OnClickListener editTextClickListener = new OnClickListener()
{
public void onClick(View v)
{
if (v.getId() == iEditText.getId())
{
iEditText.setCursorVisible(true);
}
}
};
3) sau đó onCreate
, nắm bắt sự kiện khi thực hiện là ép sử dụng OnEditorActionListener
để bạn EditText
, và sau đó setCursorVisible(false)
.
//onCreate...
iEditText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId,
KeyEvent event) {
iEditText.setCursorVisible(false);
if (event != null&& (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {
InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
in.hideSoftInputFromWindow(iEditText.getApplicationWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
}
return false;
}
});
Bạn có thể sử dụng mã sau để bật và tắt chỉnh sửa con trỏ văn bản theo chương trình.
Để bật con trỏ
editText.requestFocus();
editText.setCursorVisible(true);
Để vô hiệu hóa con trỏ
editText.setCursorVisible(false);
Sử dụng XML cho phép vô hiệu hóa con trỏ
android:cursorVisible="false/true"
android:focusable="false/true"
Để thực hiện chỉnh sửa Có thể chọn (sao chép / cắt / dán / chọn / chọn tất cả)
editText.setTextIsSelectable(true);
Để tập trung vào chế độ cảm ứng, hãy viết các dòng sau trong XML
android:focusableInTouchMode="true"
android:clickable="true"
android:focusable="true"
lập trình
editText.requestFocusFromTouch();
Để xóa tiêu điểm ở chế độ cảm ứng
editText.clearFocus()
Vấn đề với việc đặt chế độ hiển thị con trỏ thành đúng và sai có thể là một vấn đề vì nó loại bỏ con trỏ cho đến khi bạn đặt lại nó một lần nữa và đồng thời trường có thể chỉnh sửa, đó không phải là trải nghiệm người dùng tốt.
vì vậy thay vì sử dụng
setCursorVisible(false)
cứ làm như thế này
editText2.setFocusableInTouchMode(false)
editText2.clearFocus()
editText2.setFocusableInTouchMode(true)
Đoạn mã trên sẽ loại bỏ tiêu điểm, lần lượt loại bỏ con trỏ. Và kích hoạt nó một lần nữa để bạn có thể chạm vào nó một lần nữa và có thể chỉnh sửa nó. Cũng giống như trải nghiệm người dùng bình thường.
Trong trường hợp của tôi, tôi muốn bật / tắt con trỏ khi chỉnh sửa được tập trung.
Trong hoạt động của bạn:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View v = getCurrentFocus();
if (v instanceof EditText) {
EditText edit = ((EditText) v);
Rect outR = new Rect();
edit.getGlobalVisibleRect(outR);
Boolean isKeyboardOpen = !outR.contains((int)ev.getRawX(), (int)ev.getRawY());
System.out.print("Is Keyboard? " + isKeyboardOpen);
if (isKeyboardOpen) {
System.out.print("Entro al IF");
edit.clearFocus();
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edit.getWindowToken(), 0);
}
edit.setCursorVisible(!isKeyboardOpen);
}
}
return super.dispatchTouchEvent(ev);
}
edit.setCursorVisible(!isKeyboardOpen);
để edit.setCursorVisible(isKeyboardOpen);
con trỏ hiển thị khi có bàn phím.
đơn giản thêm dòng này vào bố trí cha mẹ của bạn
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true">
<EditText
android:inputType="text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Nếu bạn muốn bỏ qua Edittext
từ khi bắt đầu hoạt động, android:focusable
và android:focusableInTouchMode
sẽ giúp bạn inshallah.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout7" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:focusable="true" android:focusableInTouchMode="true">
Điều này
LinearLayout
với của bạnEdittext
.
Thay đổi trọng tâm sang chế độ xem khác (ví dụ: Bất kỳ chế độ xem văn bản hoặc Linearlayout trong XML) bằng cách sử dụng
android:focusableInTouchMode="true"
android:focusable="true"
đặt addTextChangedListener thành edittext trong Activity.
và sau đó được thay đổi sau khi đặt Edittext edittext.clearFocus()
;
Điều này sẽ cho phép con trỏ khi bàn phím mở và tắt khi bàn phím được đóng.
Trong kotlin your_edittext.isCthonVisible = false