android 在自定义数组适配器中设置文本视图颜色

9rbhqvlz  于 2023-02-14  发布在  Android
关注(0)|答案(3)|浏览(117)

我尝试在自定义数组适配器中设置TextView的颜色,但不起作用-我得到的是灰色文本而不是绿色文本。

我尝试在row.xml中设置默认的textview颜色,但也没有任何效果。

public class ReadCustomAdapter extends ArrayAdapter<ReadModel>{

    public ReadCustomAdapter(Activity a, int textViewResourceId, ArrayList<ReadModel> entries) {
        super(a, textViewResourceId, entries);
        this.entries = entries;
        this.activity = a;
    }

    public static class ViewHolder{
        public TextView item1;
        public TextView item2;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        ViewHolder holder;
        if (v == null) {
            LayoutInflater vi =
                (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.row, null);
            holder = new ViewHolder();
            holder.item1 = (TextView) v.findViewById(android.R.id.text1);
            holder.item2 = (TextView) v.findViewById(android.R.id.text2);             
            v.setTag(holder);
        }
        else
            holder=(ViewHolder)v.getTag();

        final ReadModel custom = entries.get(position);

        if (custom != null) {
            holder.item1.setText(custom.getNick());
            holder.item2.setText(custom.getMsg());

            holder.item1.setTextColor(R.color.green);

        }
        return v;
    }

}

color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="green">#00ff00</color>
</resources>
kcwpcxri

kcwpcxri1#

setTextColor()需要一个color-integer(在本例中为0xFF 00 FF 00),但您为它提供了该颜色的资源ID,它可以是任何数字。
您可以像这样使用它:

holder.item1.setTextColor(0xFF00FF00);

或者像这样:

holder.item1.setTextColor(getResources().getColor(R.color.green));
sgtfey8w

sgtfey8w2#

您可以使用values/colors.xml中设置的from @colour/my_value,如下所示;

holder.item1.setTextColor(Color.green(R.color.colorWarning));
r8xiu3jd

r8xiu3jd3#

问题出在您的代码保持器上。item1.setTextColor(R.color.green);它不传入颜色,而是传入保存在www.example.com中的IDR.java
应该是这样

holder.item1.setTextColor(getColor((R.color.green));

或者,您可以通过以下方式使用而不使用Xml依赖项

holder.item1.setTextColor(android.graphics.Color.GREEN);

或者您可以尝试使用TextView,它允许您在一行中使用多种颜色Here

相关问题