2013-10-17 19 views
8

Tôi có một hoạt động với scrollview chứa một số nút và EditText Vì vậy, các nút nằm phía trên thành phần EditText.EditText: Tránh tập trung vào setText()

Bằng cách nhấp vào một nút thành phần EditText thay đổi giá trị văn bản của mình bằng cách sử dụng EditText.setText("foo");

Đáng tiếc là cuộc gọi này sẽ thiết lập focus cho các thành phần EditText, vì vậy scrollview sẽ di chuyển đến các thành phần EditText (nhấp nháy con trỏ).

Có cách nào để tránh điều này không?

Tôi đã cố gắng để làm một cái gì đó như thế này

public void setText(String t){ 
    editText.setFocusable(false) 
    editText.setFocusableInTouchMode(false); 
    editText.setText(t); 
    editText.setFocusable(true); 
    editText.setFocusableInTouchMode(true); 
} 

Nhưng điều đó không làm việc, và đôi khi setFocusable(true) không ảnh hưởng, vì vậy EditText không phải là "nhấp được" nữa.

+0

Thử thay đổi tiêu điểm của EditText trong xml. –

+0

Nhưng vẫn có thể chỉnh sửa – sockeqwe

+0

thử bằng cách đặt trình nghe người xem văn bản là null và sau đó kiểm tra. –

Trả lời

0

Trong sử dụng nút của bạn dưới đây đang

InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 

Tham khảo liên kết dưới đây

android edittext remove focus after clicking a button

0

sử dụng này trong xml của bạn:

<EditText 
     android:clickable="false" 
     android:cursorVisible="false" 
     android:focusable="false" 
     android:focusableInTouchMode="false"> 
</EditText> 

hoặc

edittext.setKeyListener(null); 
0

Trong sử dụng nút của bạn dưới đây đang ......

InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 
Các vấn đề liên quan