2012-10-23 13 views
8

Tôi có vài đối tượng EditText có văn bản bên trong. Tôi muốn rằng vào lần đầu tiên một EditText đang tập trung để xóa văn bản trong đó, nhưng chỉ lần đầu tiên.Chỉnh sửa văn bản rõ ràng trên tiêu điểm đầu tiên - Android

Tôi có thể làm như thế nào?

Dưới đây là ví dụ: Tôi có EditText được gọi là SomeThing với văn bản "someText" trong đó. khi người dùng chạm vào SomeThing lần đầu tiên tôi muốn xóa "someText". vì vậy giả sử văn bản đã bị xóa và giờ người dùng đã nhập văn bản của riêng mình, lần này là "someOtherText" và EditText mất tập trung cho một số EditText khác. Lần này khi người dùng chạm vào SomeThing, "someOtherText" sẽ không bị xóa vì đó là lần thứ hai nó lấy nét.

+0

Lần đầu tiên có nghĩa là, lần đầu tiên mở ứng dụng hoặc cài đặt ứng dụng? – Sieryuu

+0

Tôi đang nói về lần đầu tiên đối tượng editText được tập trung. –

Trả lời

9

Matan, tôi không chắc chắn nếu điều này là những gì bạn đang nhìn, nhưng tôi nghĩ rằng bạn muốn hiển thị một 'hint' cho Edit Text của bạn

Ví dụ

<EditText 
. 
. 
android:hint="Please enter your name here"> 

Đối với một ví dụ kiểm tra http://www.giantflyingsaucer.com/blog/wp-content/uploads/2010/08/android-edittext-example-3a.jpg này

+0

chính xác, tôi đang tìm kiếm tùy chọn đó, không biết nó tồn tại. Cảm ơn! –

2

Nếu bạn đang tìm cách thêm trình giữ chỗ cho EditText, chỉ cần thêm android:hint = 'some text' vào tệp XML tương ứng hoặc gọi phương thức setHint('some text') trên EditText.

Nếu không, bạn có thể sử dụng số OnFocusChangeListener() để trả lời sự kiện lấy tiêu điểm. Để kiểm tra xem đây có phải là lần đầu tiên cho số EditText tập trung, hãy sử dụng biến số Boolean khác (ví dụ: isFirstTimeGetFocused) và khởi tạo biến đó thành true trong phương thức onCreate(). Sau khi số EditText được tập trung, hãy đặt isFirstTimeGetFocused thành false;

editText.setOnFocusChangeListener(new OnFocusChangeListener() { 
@Override 
public void onFocusChange(View v, boolean hasFocus) { 
    if(hasFocus && isFirstTimeGetFocused){ 
     editText.setText(""); 
     isFirstTimeGetFocused = false; 
    } 
}); 
+0

Lưu ý: nếu trường là lần đầu tiên trên hệ thống phân cấp của bạn, bạn nên đặt focusable và focusableintouchmode trong nhóm xem gốc để tránh bị tập trung vào hoạt động bắt đầu. –