2017-02-07 11 views
1

私はEditTextを持っていますが、数字を入力すると$記号は文字列の入力に基づいて移動する必要があります。たとえば、20を入力すると、$記号が右に移動し、20 $になります。私が200を入力すると、$記号が右に移動し、200 $になるはずです。どんな助けも高く評価されます。

これは私のコードは今のように見える方法です:addTextChangedListener(TextWatcher watcher)で `

<EditText 
android:id="@+id/amount_edit_text" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="@dimen/space_normal" 
app1:inputTextSize="@dimen/text_large" 
app1:inputIconDrawable="@drawable/ic_dollar_sign" 
app1:inputIconTint="@color/colorDark" 
app1:inputOneHint="@string/offer_amount"    
app1:inputIconTranslateY="@dimen/offer_large_text_icon_shift" 
app1:inputType="number"/> 

`

+1

あなたが何をしようとしたのですか? http://stackoverflow.com/help/how-to-ask – PaulProgrammer

+0

セマンティクスの質問だけですが、通常ドル記号は数字の左側にありますか?例えば$ 200 – RayfenWindspear

+0

@RayfenWindspear:はい、そうですが、右に向かって配置することは要件です。 – user1903022

答えて

1

あなたがテキストを変更したときのために監視するTextView.addTextChangedListener()を使用することができます。それでは、どこにでも$を付けることができます。

EDIT:Cruncherが指摘したように、これは別のonTextChangedイベントを発生させる可能性があります。したがって、$で終わっているかどうかを調べるなら、それを包み込みます。

このような何か:

EditText amountEditText = (EditText) findViewById(R.id.amount_edit_text); 
amountEditText.addTextChangedListener(new TextWatcher() { 

    public void afterTextChanged(Editable s) { 
    } 

    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 

    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // add $ only if we need to 
     if (!s.toString().substring(s.length() - 1)).equals("$")) { 
      amountEditText.setText(s + "$"); 
     } 
    } 
}); 
1

EditTextTextwatcherを追加します。

は、このようなTextWatcher.onTextChanged(CharSequence s, int start, int before, int count)を実装します。

TextWatcher.onTextChanged(CharSequence s, int start, int before, int count){ EditText.setText(s + "$"); }

+0

ええと、テキストウォッチャーのテキストを変更しても別のonTextChangedがトリガーされないのですか? – Cruncher

関連する問題