2012-01-08 31 views
6

Làm cách nào để chèn ký tự vào giữa trường EditText?
Tôi đang tạo một máy tính có thể lấy một biểu thức chuỗi như "3 * (10^2-8)". Tôi đang sử dụng một trường EditText để làm cho chuỗi sử dụng XML như sau:Android EditText chèn

EditText

android:id="@+id/entry" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_below="@id/label" 
android:text="@string/testString1" 
android:background="@android:drawable/editbox_background" 

và sau đó trong hoạt động của tôi tôi có, nói:

entry = (EditText)findViewById(R.id.entry); 
entry.setText("blablahblah"); 
entry.setSelection(3); 

Bây giờ tôi có một EditText với con trỏ nhấp nháy sau ký tự thứ ba trong chuỗi. Làm thế nào để chèn một nhân vật ở đó, vì vậy nó chính xác nói "blahblahblah"?

Trả lời

4

Phương thức getText() của tiện ích EditText trả về một đối tượng triển khai giao diện có thể chỉnh sửa. Trên đối tượng này, bạn có thể gọi phương thức insert() để chèn văn bản ở một vị trí nhất định.

Tôi đã tìm ra điều này bằng cách đọc tài liệu, nhưng không bao giờ tự sử dụng tài liệu này. Nhưng đối với nhu cầu của bạn, để chèn một ký tự ở vị trí đã chọn trong EditText, phần sau sẽ hoạt động:

Editable text = entry.getText(); 
text.insert(entry.getSelectionStart(), "h"); 
+0

Cảm ơn Jan-Henk. Tôi không hiểu rằng nó thực hiện giao diện Editbale vì vậy tôi đã không kiểm tra ở đó. Đây là những gì tôi đang sử dụng. Bằng cách này tôi chỉ có thể sử dụng bất cứ điểm chèn nào được chọn. Mục có thể chỉnh sửaE1 = entry.getText(); entryE1.insert (entry.getSelectionStart(), "1"); Dường như nó hoạt động tốt. –

+0

Tôi đã cập nhật câu trả lời của mình bằng phương thức getSelectionStart() mà bạn đã đề cập. –

+0

Thực sự tuyệt vời! – Sakthimuthiah

0

Hãy nói rằng bạn có một chuỗi gọi là str và nó chứa "blablahblah" và bạn muốn làm cho nó "blahblahblah" bạn có thể làm như sau:

String newString = str.substring(0, 3) + "h" + str.substring(3); 

Lấy 3 đầu tiên, thêm lá thư mới, đặt mọi thứ khác. Vì vậy, bạn có thể lấy String từ EditText, thay đổi nó như thế này và sau đó đặt String mới làm giá trị mới của EditText.

Các vấn đề liên quan