Android以编程方式更改按钮的文本颜色

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

我在linearlayout horizontalscrollview中动态创建按钮,然后单击“获取选定的按钮位置”

我想知道如何更改所选按钮的文本颜色

这是我的密码

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))