2012-01-08 7 views
6

EditTextフィールドの中央に文字を挿入するにはどうすればよいですか?
"3 *(10^2-8)"のような文字列式をとる電卓を作っています。Android EditTextを挿入する

の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" 

、その後、私の活動に私は、持っていると言う:

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

は、今私はのEditTextを持っている私はそうのようなXMLを使用して文字列を作るためのEditTextフィールドを使用しています文字列の3番目の文字の後にカーソルが点滅するフィールド。どのようにして文字を挿入するのですか?「blahblahblah」と正しく表示されますか?

答えて

4

EditTextウィジェットのgetText()メソッドは、Editableインタフェースを実装するオブジェクトを返します。このオブジェクトでは、特定の位置にテキストを挿入するためにinsert()メソッドを呼び出すことができます。

これはドキュメントを読むことでわかりましたが、これは決して自分では使用しませんでした。しかし、あなたの必要に応じて、EditTextの選択された位置に文字を挿入するには、次のように動作する必要があります:

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

ありがとうJan-Henk。私はそれがEditbaleインターフェースを実装していることを理解していないので、そこにチェックを入れませんでした。ここに私が使っているものがあります。こうすることで、すでに選択されている挿入ポイントを使用することができます。 編集可能なエントリE1 = entry.getText(); entryE1.insert(entry.getSelectionStart()、 "1"); これはうまくいくようです。 –

+0

あなたが言及したgetSelectionStart()メソッドで私の答えを更新しました。 –

+0

本当にすばらしい! – Sakthimuthiah

0

あなたはSTRと呼ばれる文字列を持っており、それが「blablahblah」が含まれ、あなたはそれあなたが次の操作を行うことができます「blahblahblah」ようにしたいとしましょう:

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

は、新しい文字を追加し、最初の3を取ります、他のすべてを置く。したがって、EditTextからStringを取得し、このように変更して、新しいStringをEditTextの新しい値として配置することができます。

関連する問題