Android以编程方式更改按钮的文本颜色
我在linearlayout horizontalscrollview中动态创建按钮,然后单击“获取选定的按钮位置” 我想知道如何更改所选按钮的文本颜色 这是我的密码Android以编程方式更改按钮的文本颜色,android,button,horizontalscrollview,Android,Button,Horizontalscrollview,我在linearlayout horizontalscrollview中动态创建按钮,然后单击“获取选定的按钮位置” 我想知道如何更改所选按钮的文本颜色 这是我的密码 String[] categories = {"SUN","MON", "TUS", "WED", "THU", "FRI", "SAT", "SUN","MON", "TUS", "WED", "THU", "FRI", "SAT"}; private LinearLayout ll; Button btn; public v
String[] categories = {"SUN","MON", "TUS", "WED", "THU", "FRI", "SAT", "SUN","MON", "TUS", "WED", "THU", "FRI", "SAT"};
private LinearLayout ll;
Button btn;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ll = (LinearLayout) findViewById(R.id.hsvLinearLayout);
for(int i = 0; i < categories.length; i++) {
btn = new Button(this);
btn.setText(categories[i]);
btn.setBackgroundColor(Color.parseColor("#ffffff"));
btn.setOnClickListener(buttonClick);
ll.addView(btn);
int idx = ll.indexOfChild(btn);
btn.setTag(Integer.toString(idx));
// btn.setId(idx);
}
}
OnClickListener buttonClick = new OnClickListener() {
public void onClick(View v) {
String idxStr = Integer.toString(ll.indexOfChild(v));
//(String)v.getTag();
Toast.makeText(MainActivity.this, idxStr, 6000).show();
}
};
String[]categories={“SUN”、“MON”、“TUS”、“WED”、“THU”、“FRI”、“SAT”、“SUN”、“MON”、“TUS”、“WED”、“THU”、“FRI”、“SAT”};
私人线路布局;
按钮btn;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ll=(线性布局)findViewById(R.id.hsvLinearLayout);
对于(int i=0;i
试试这个
编辑的答案
((Button)view).setTextColor(Color.parseColor("#000000"));
检查类型并指定文本颜色
OnClickListener buttonClick = new OnClickListener() {
public void onClick(View v) {
String idxStr = Integer.toString(ll.indexOfChild(v));
if(v instanceof Button){
((Button)v).setTextColor(Color.parseColor("#000000"));
}
Toast.makeText(MainActivity.this, idxStr, 6000).show();
}
};
请检查以下答案,然后单击“确定” 正如您所看到的,您可以通过为按钮的所有状态创建一个样式文件,以编程方式并通过xml来实现 希望这有助于这项工作:
button.setTextColor(getColor(R.color.blue))
我只是检查所有已发布的解决方案。没有人工作。 它们也会产生这样的
错误
btnjava.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setTextColor(int)' on a null object reference
真正的解决方案:
第1步:当您尝试更改setTextColor
时,请始终使用try/catch
,以防止应用程序崩溃
第二步:无论您已经定义了按钮,请在setTextColor
代码行之前再次定义(如R.id.btnId
)
[很抱歉英语不好]
快乐编码:)这对我很有用:
btnItem.setTextColor(ContextCompat.getColor(context, R.color.black))
不,这不管用。它只更改了最后一个按钮的文本颜色,而没有选择或按下按钮。您是否同意使用以编程方式应用的xml定义样式的解决方案,或者您是否需要java代码中的所有内容?感谢为答案添加样式。使用它们使代码更易于维护。另外,对现有答案的再利用也很好。我如何再次删除未选中按钮的颜色?我只是想保持按钮文本颜色的变化,为那些被选中的时刻。谢谢
.setTextColor(Color.parseColor(#000000”)代码>起作用。注意.setTextColor(R.color.colorname)代码>目前不工作(2019年1月)。
btnItem.setTextColor(ContextCompat.getColor(context, R.color.black))