我发现自己重复了相同的代码行,并且我想将其自动化。
我正在执行以下操作以更改视图中文本的颜色以与正确/不正确的答案相对应:
((CheckBox) findViewById(R.id.quiz_answer_2e)).setTextColor(Color.parseColor("#EE7674"));
我想传递参数,所以不必重复此操作,我更喜欢调用该函数并将参数设置为该函数,例如:
public void setCorrect(String viewType, String viewName, String thisColor) {
if (thisColor.equals("red")) {
thisColor = "#EE7674";
} else {
thisColor = "#9DBF9E";
}
((**viewType**) findViewById(R.id.**viewName**)).setTextColor(Color.parseColor(**thisColor**));
}
其中viewType,viewName和thisColor传递给方法。有没有办法做到这一点?
我尝试将值保存到字符串,但是无法确定如何从方法中运行该字符串。
提前致谢。
我将基于以下因素重构您的方法:
setTextColor(int color)
在被定义TextView
,并通过适用类,如遗传性EditText
,CheckBox
,Button
等。int
boolean
使用易于解释的名称(例如)来设置参数a ,correct
并使用该信息来标识颜色资源。这将导致解决方案,例如:
public void setCorrect(int viewId, boolean correct) {
int colorId = correct ? R.color.correct : R.color.incorrect;
int color = ContextCompat.getColor(getApplicationContext(), colorId);
((TextView) findViewById(viewId)).setTextColor(color);
}
凡colors.xml
在res/values
看起来是这样的:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="correct">#9DBF9E</color>
<color name="incorrect">#EE7674</color>
</resources>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句