gpt4 book ai didi

java - 调用 setText 时设置 TextView 的更多属性

转载 作者:行者123 更新时间:2023-12-02 09:24:45 24 4
gpt4 key购买 nike

我正在寻找一种简单的方法来根据 TextView.setText() 设置的输入设置 TextView 元素的更多属性。

具体来说,我的代码目前如下所示:

TextView payment;
BigDecimal mBigDecimal;

payment.setText(BigDecimal.toString());
if (mBigDecimal.compareTo(BigDecimal.ZERO) == -1) {
payment.setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(super.getContext(), R.color.lightred)));
} else if (mBigDecimal.compareTo(BigDecimal.ZERO) == 1) {
payment.setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(super.getContext(), R.color.lightgreen)));
} else {
payment.setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(super.getContext(), R.color.transparent)));
}
// ColorStateListStud only holds state_enabled and sets the given color

这在我的整个代码中被复制了多次。所以我想尽可能地简化这一点。我想根据 BigDecimal 值设置 BackgroundTintList,在设置 TextView 元素的文本时我总是可以使用该值。

最佳答案

我认为你有两个选择。

创建自定义 Utils.java 类

您可以创建一个自定义静态类来为您更新 TextView 。

public class Utils {

public static void setText(TextView textView, BigDecimal bigDecimal) {
if(textView != null && bigDecimal != null) {
// Get context
Context context = textView.getContext();

// Set text
textView.setText(bigDecimal.toString());

// Set color
if (bigDecimal.compareTo(BigDecimal.ZERO) == -1) {
textView.setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(context, R.color.lightred)));
} else if (bigDecimal.compareTo(BigDecimal.ZERO) == 1) {
textView.setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(context, R.color.lightgreen)));
} else {
textView.setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(context, R.color.transparent)));
}
} else {
Log.e("ERROR", "Error: TextView and/or BigDecimal is null");
}
}

然后,您可以调用:

Utils.setText(mTextView, mBigDecimal);

创建您自己的自定义 TextView

public class CustomTextView extends TextView {

public CustomTextView(final Context context) {
this(context, null);
}

public CustomTextView(final Context context,
@Nullable final AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomTextView(final Context context, @Nullable final AttributeSet attrs,
final int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

public void setText(BigDecimal bigDecimal) {
setText(bigDecimal.toString());

// Set color
if (bigDecimal.compareTo(BigDecimal.ZERO) == -1) {
setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(getContext(), R.color.lightred)));
} else if (bigDecimal.compareTo(BigDecimal.ZERO) == 1) {
setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(getContext(), R.color.lightgreen)));
} else {
setBackgroundTintList(new ColorStateListStud().getList(ContextCompat.getColor(getContext(), R.color.transparent)));
}
}
}

然后,在java端:

CustomTextView mTextView = (CustomTextView) findViewById(R.id.text_view);
mTextView.setText(mBigDecimal);

在你的layout.xml中:

<com.test.CustomTextView
android:id="@+id/text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

关于java - 调用 setText 时设置 TextView 的更多属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58412679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com