$符号应根据字符串输入移动

时间:2017-02-07 17:34:13

标签: android android-edittext

我有一个EditText,当我输入任何数字时,$ sign应根据字符串输入移动。例如,如果我输入20,$ sign应该向右移动,它应该是20 $。如果我输入200,$ sign应该向右移动,它应该是200 $。任何帮助都将受到高度赞赏。

这就是我的代码现在的样子:`

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

`

2 个答案:

答案 0 :(得分:1)

使用addTextChangedListener(TextWatcher watcher)Textwatcher添加EditText

像这样实施TextWatcher.onTextChanged(CharSequence s, int start, int before, int count)

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

答案 1 :(得分:1)

您可以使用TextView.addTextChangedListener()来观察文字何时发生变化。然后你可以在任何你想要的地方附上$。

编辑:正如Cruncher所说,这可能会引发另一个onTextChanged事件。所以将它包装在if中,检查它是否已经以$结尾。

这样的事情:

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 + "$");
        }
   }
});