如何以编程方式更改所选项目并修改视图?

How to programmatically change the selected item and modify a view?

我有一个小问题。

我在 android 中使用 Spinner。例如微调器包含 4 个字符串项:Item1、Item2、Item3、Item4。微调器由例如 Item3 设置。现在我想以编程方式将所选项目更改为 Item2 并将字体颜色更改为红色。所以我做了:

_spinner.setSelection(1);
View view = _spinner.getSelectedView();
if(view instanceof TextView)
{
    // change color
}

但是没有用。这是因为当我获得 selectedView 时,Item3 仍处于选中状态,所以我更改了 Item3 视图的颜色。如何解决?

试试这个

spinner= findViewById(R.id.spinner);


        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                ((TextView) adapterView.getChildAt(0)).setTextColor(getResources().getColor(R.color.black));
                ((TextView) adapterView.getChildAt(0)).setTextSize(19);            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

尝试像这样设置适配器:

final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_item, list) {
        @Override
        public View getDropDownView(int position, View convertView,
                                    ViewGroup parent) {
            View view = super.getDropDownView(position, convertView, parent);
            TextView tv = (TextView) view;

            if (position == 0)
                tv.setTextColor(ContextCompat.getColor(Activity.this, android.R.color.darker_gray));
            else
                tv.setTextColor(ContextCompat.getColor(Activity.this, android.R.color.black));

            return view;
        }
    };
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter );
    spinner.setSelection(Adapter.getPosition(Item2));

这样您就可以轻松地为Item1、Item2或Item3设置不同的颜色 并且 item2 将在微调器上动态设置。