答案 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);
}
}
这是屏幕。
答案 3 :(得分:0)
只有一个EditText也可以使用。为此,您必须设置前缀并从edittext获取相对于prefixCount的值。
您可以尝试这种方式。这是一种更好的方法。
<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>
输出:与上面提到的图片相同。
使用单一的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并手动添加此逻辑,或通过代码
执行此操作