我是Android Dev的新手,我尝试在TextView中动态部分之前和之后轻轻地添加静态文本,而不必在每次更新动态部分时添加2个其他TextView或添加这些内容我的TextView。
与CSS中的内容属性:: after或::之前的内容类似。
可能看起来像这样的东西:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="10"
android:textAfter=" km/h" />
我上下挖谷歌(有时候去了第3页)但我找不到任何方法来做这个对我来说非常基本的技巧。
答案 0 :(得分:3)
您可以使用%d
或%1$d
将字符串资源用于具有预定义格式的动态文本。
例如,如果要显示10 km/h
之类的内容,可以使用这样的字符串资源:
<string name="range_in_kilometer_per_hour">%d km/h</string>
然后您可以通过以下代码进行设置:
TextView tvKm;
...
int currentKm = 10;
String kmValue = getString(R.string.range_in_kilometer_per_hour, currentKm);
tvKm.setText(kmValue);
或者,如果您想显示10 km each 1 hour
之类的内容,可以使用以下内容:
<string name="range_in_kilometer_per_hour">%1$d km each %2$d hour</string>
然后使用以下命令将其设置为TextView:
int currentKm = 10;
int hour = 1;
String kmValue = getString(R.string.range_in_kilometer_per_hour, currentKm, hour);
tvKm.setText(kmValue);
如果要使用字符串而不是整数,可以使用%s
进行单个文本替换,或使用%1$s
进行多个文本替换。
您需要记住%1$s
中 1 的方式是文本替换的位置。
阅读更多内容:
答案 1 :(得分:1)
在我看来,你只需要一个自定义TextView。然后你可以制作一个。
首先,声明CustomTextView的自定义属性。在attrs.xml
中创建名为/res/values
的新文件。用下面的代码填写。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="CustomTextView">
<attr name="textAfter" format="string"/>
</declare-styleable>
</resources>
第二次,将您的CustomTextView创建为java文件。这很简单。您只需要获取textAfter
的属性值,并在调用setText
时将其设置为文本的尾部。
public class CustomTextView extends TextView {
private String mTextAfter;
public CustomTextView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.CustomTextView);
mTextAfter = array.getString(R.styleable.CustomTextView_textAfter);
array.recycle();
}
@SuppressLint("SetTextI18n")
@Override
public void setText(CharSequence text, BufferType type) {
super.setText(text + (TextUtils.isEmpty(mTextAfter) ? "" : mTextAfter), type);
}
}
Thrid ,在布局中使用CustomTextView
。(不要忘记在布局的根视图中添加xmlns:app="http://schemas.android.com/apk/res-auto"
)
<!-- your package name -->
<com.xxx.xxx.CustomTextView
android:id="@+id/mtv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:textAfter=" km/h" />
第四,请在XXXActivity.java
中使用。
//TextView mtv = (TextView) findViewById(R.id.mtv));// this is worked too
CustomTextView mtv = ((CustomTextView) findViewById(R.id.mtv));
mtv.setText("18");//do NOT put int value of 18 in it, or it will be treated as a resource id
然后您会看到,km/h
之后添加了18
。
答案 2 :(得分:0)
我认为你应该这样做
删除xml中的文本,即km / hr
转到你的活动java文件让它成为activity_main.java
动态获取速度值
为...说
int speed;
然后在textview(xml)中
分配任何ID android:id="@+id/speedTextView"
在java中
分配速度值
TextView speedWithUnit = (TextView) findViewById(R.id.speedTextView);
和
speedWithUnit.setText(speed+"km/hr");
希望这个帮助