【问题标题】:Change spinner item text color programmatically以编程方式更改微调器项目文本颜色
【发布时间】:2019-11-12 12:07:59
【问题描述】:

我正在通过 sqlite 数组将记录加载到我的微调器中。是否可以根据项目本身更改项目的文本颜色?

代码如下:

Spinner spinner = FindViewById<Spinner>(CiberStock.Resource.Id.spnDados);

ArrayAdapter adapter = new ArrayAdapter(this, Android.Resource.Layout.SimpleListItem1, familias);

spinner.Adapter = adapter;

谢谢

【问题讨论】:

  • 可以吗?

标签: c# xamarin xamarin.android


【解决方案1】:

你可以检查一下,如果你需要的话?

您可以自定义您的适配器,然后将颜色设置为 textview,这是一个将 spinnerItems 传递给适配器的示例:

[Activity(Label = "SpinnerActivity", MainLauncher = true)]
public class SpinnerActivity : Activity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        SetContentView(Resource.Layout.spinner);

        Spinner sp = FindViewById<Spinner>(Resource.Id.spinner);
        List<MySpinnerItem> spinnerItems = new List<MySpinnerItem>();
        spinnerItems.Add(new MySpinnerItem("Red-",Color.Red));
        spinnerItems.Add(new MySpinnerItem("Yellow--", Color.Yellow));
        spinnerItems.Add(new MySpinnerItem("Green-----", Color.Green));
        spinnerItems.Add(new MySpinnerItem("Blue---", Color.Blue));
        spinnerItems.Add(new MySpinnerItem("Black--------", Color.Black));
        var spinnerAdapter = new MyAdapter(this, Android.Resource.Layout.SimpleSpinnerItem, spinnerItems);
        sp.Adapter = spinnerAdapter;
    }
}

class MyAdapter : ArrayAdapter<MySpinnerItem>
{
    public Context context;
    public List<MySpinnerItem> list;
    public int textViewResourceId;
    public MyAdapter(Context context, int textViewResourceId, List<MySpinnerItem> objects) : base(context, textViewResourceId, objects)
    {
        this.context = context;
        list = objects;
        this.textViewResourceId = textViewResourceId;
    }

    public override View GetDropDownView(int position, View convertView, ViewGroup parent)
    {

        if (convertView == null)
        {
            LayoutInflater inflater = LayoutInflater.From(context);
            convertView = inflater.Inflate(textViewResourceId, parent, false);
        }
        TextView tv = (TextView)convertView.FindViewById(Android.Resource.Id.Text1);
        tv.Text = list[position].Text;
        tv.SetTextColor(list[position].Color);
        return convertView;
    }
    public override View GetView(int position, View convertView, ViewGroup parent)
    {

        if (convertView == null)
        {
            LayoutInflater inflater = LayoutInflater.From(context);
            convertView = inflater.Inflate(textViewResourceId, parent, false);
        }

        TextView tv = (TextView)convertView.FindViewById(Android.Resource.Id.Text1);
        tv.Text = list[position].Text;
        tv.SetTextColor(list[position].Color);
        return convertView;
    }
}

class MySpinnerItem
{
    public string Text;
    public Color Color;

    public MySpinnerItem(string text, Color color)
    {
        Text = text;
        Color = color;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多