2012-01-08 99 views
6

如何將字符插入EditText字段的中間?
我正在製作一個可以像「3 *(10^2-8)」這樣的字符串表達式的計算器。我用一個EditText字段進行使用XML,像這樣的字符串:Android 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" 

,然後在我的活動我也有,說

的EditText:

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

現在我有一個EditText光標在字符串中的第三個字符後閃爍。我如何在那裏插入一個角色,所以它正確地說「blahblahblah」?

回答

4

EditText小部件的getText()方法返回實現Editable接口的對象。在這個對象上,你可以調用insert()方法在某個位置插入文本。

我通過閱讀文檔發現了這一點,但從未自己使用過。但爲了您的需要,要在EditText中的選定位置插入一個字符,以下內容應該可以工作:

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

謝謝Jan-Henk。我不明白它實現了Editbale接口,所以我沒有在那裏檢查。這是我正在使用的。這樣我就可以使用已經選擇的任何插入點。 Editable entryE1 = entry.getText(); entryE1.insert(entry.getSelectionStart(),「1」); 它似乎很好。 – 2012-01-09 05:12:33

+0

我用你提到的getSelectionStart()方法更新了我的答案。 – 2012-01-09 11:46:49

+0

它真的很棒! – Sakthimuthiah 2013-07-05 14:29:51

0

比方說,你有一個叫做STR字符串,它包含「blablahblah」,你想讓它「blahblahblah」你可以做到以下幾點:

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

取前3,添加新的信,放置一切。所以你可以從EditText中取出字符串,像這樣改變它,然後把新的字符串作爲EditText的新值。