如何在左侧创建带货币的编辑文本,在右侧创建值

时间:2016-05-19 03:51:19

标签: java android

如何在左侧创建带货币的编辑文本,在右侧创建值。

这是图像

enter image description here

货币也可以是编辑文本的一部分?或货币是不同的编辑文本?

我希望它只能是1个编辑文本。

5 个答案:

答案 0 :(得分:2)

为什么不创建水平方向的LinearLayout 并将TextView向左对齐,在右侧对齐编辑文本?

答案 1 :(得分:2)

使用EditText并设置此属性android:drawableLeft="@mipmap/ic_launcher"

<强>码

   <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableLeft="@mipmap/ic_launcher"
        android:hint="Add money"
        android:gravity="center"
        android:padding="3dp"/>

如果您需要动态更改此图像,请在您的java文件中使用此代码

参数: - 左,上,右,下

editText.setCompoundDrawablesWithIntrinsicBounds(R.drawable.drawableLeft, 0, 0, 0);

答案 2 :(得分:1)

  

使用SpannableString您可以实现此目标。

     

activity_main.xml档案中。

<EditText
        android:id="@+id/edtCurrency"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:text="Test"
        android:textColor="#000"
        android:textSize="26sp" />
  

MainActivity.java中添加此内容。

 EditText edtCurrency = (EditText) findViewById(R.id.edtCurrency);
 SpannableString spannableString = new SpannableString("USD  123.456");
 spannableString.setSpan(new UsdSpannableSuperScript((float) 1.0), 2, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 edtCurrency.setText(spannableString);
  

以下是UsdSpannableSuperScript.java

public class UsdSpannableSuperScript extends SuperscriptSpan {
    //divide superscript by this number
    protected int fontScale = 2;

    //shift value, 0 to 1.0
    protected float shiftPercentage = 0;

    //doesn't shift
    UsdSpannableSuperScript() {
    }

    //sets the shift percentage
    UsdSpannableSuperScript(float shiftPercentage) {
        if (shiftPercentage > 0.0 && shiftPercentage < 1.0)
            this.shiftPercentage = shiftPercentage;
    }

    @Override
    public void updateDrawState(TextPaint tp) {
        //original ascent
        float ascent = tp.ascent();

        //scale down the font
        tp.setTextSize(tp.getTextSize() / fontScale);

        //get the new font ascent
        float newAscent = tp.getFontMetrics().ascent;

        //move baseline to top of old font, then move down size of new font
        //adjust for errors with shift percentage
        tp.baselineShift += (ascent - ascent * shiftPercentage)
                - (newAscent - newAscent * shiftPercentage);
    }

    @Override
    public void updateMeasureState(TextPaint tp) {
        updateDrawState(tp);
    }
}
  

这是屏幕

enter image description here

答案 3 :(得分:0)

  1. 只有一个EditText也可以使用。为此,您必须设置前缀并从edittext获取相对于prefixCount的值。

  2. 您可以尝试这种方式。这是一种更好的方法。

           <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/grey"
                android:orientation="horizontal"
                android:padding="10dp">
    
                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="USD" />
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:background="@null"
                    android:singleLine="true" />
    
            </LinearLayout>
    
  3. 输出:与上面提到的图片相同。

    1. 使用单一的EditText另一种方法。您可以拥有货币&#34; USD&#34;并将drawableLeft设置为edittext。

                <EditText
                      android:id="@+id/edittext"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      android:layout_gravity="center"
                      android:layout_margin="10dp"
                      android:drawableLeft="@drawable/dollar_sign"
                      android:drawablePadding="5dp"
                      android:inputType="number"
                      android:padding="10dp"
                      android:singleLine="true" />
      

答案 4 :(得分:0)

Currency currency = new Currency(Locale.US)
final String usd = currency.getCurrencyCode(); //returns USD

要使用,请扩展TextView并手动添加此逻辑,或通过代码

执行此操作