代码之家  ›  专栏  ›  技术社区  ›  miosz

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

  •  1
  • miosz  · 技术社区  · 7 年前

    我有个小问题。

    我在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视图的颜色。如何修复它?

    2 回复  |  直到 7 年前
        1
  •  2
  •   AskNilesh    7 年前

    试试这个

    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) {
    
                }
            });
    
        2
  •  1
  •   Manish Gupta    7 年前

    尝试如下设置适配器:

    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将在微调器上动态设置。