android spinner setText删除不包含此文本BUG的其他元素

时间:2017-03-05 10:03:09

标签: android frame

我从代码中动态添加一组微调器, 到用户控件 - 框架布局类型(使用数据绑定来设置视图模型中的值), 这是扩大布局的功能(我从Ctor中调用它):

   private void initInflate() {

        LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        binding = SensorSettingsBinding.inflate(inflater, this, true);
        binding.linear.setDividerPadding(10);

        for (SensorSettingViewModel s :Settings) {
            MaterialBetterSpinner spinner = new MaterialBetterSpinner(getContext());
            spinner.setHint(s.getSettingName());
            spinner.setHintTextColor(getResources().getColor(R.color.colorHint));
            spinner.setMinimumWidth(100);
            spinner.setFloatingLabelTextSize(40);
            spinner.setTextSize(15);
            spinner.setFloatingLabel(MaterialAutoCompleteTextView.FLOATING_LABEL_HIGHLIGHT);
            spinner.setFloatingLabelText(s.getSettingName());
            spinner.setId(s.getId());
            ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, s.getValues());
            spinner.setAdapter(spinnerArrayAdapter);
            spinner.setText(spinnerArrayAdapter.getItem(s.getIndex()));
//            spinner.setSelection(s.getIndex());
            binding.linear.addView(spinner);

            MarginLayoutParams params = (ViewGroup.MarginLayoutParams)spinner.getLayoutParams();
            params.setMargins(30, 0, 30, 0); //substitute parameters for left, top, right, bottom
            spinner.setLayoutParams(params);
        }
    }

我尝试从微调器值中选择一个特定的索引:

spinner.setSelection(s.getIndex());

但它没有用,我找到了解决方案(在堆栈溢出中):

spinner.setText(spinnerArrayAdapter.getItem(s.getIndex()));

这是通过字符串值项从微调器中选择一个值。 但是在这里我有一个非常奇怪的错误:微调器的所有值都变得清晰,只有包含该字符串的值才会停留在微调器列表中。

另一个问题是,这导致了这个微调器的颜色材料设计消失了 任何想法??

1 个答案:

答案 0 :(得分:0)

我的问题是这样解决的: 我将set设置为setAdapter的索引:

spinner.setText(spinnerArrayAdapter.getItem(s.getIndex()));     
spinner.setAdapter(spinnerArrayAdapter);

但我仍然认为这是android中的一个错误。
无论如何,关于材料设计颜色的另一个问题与这种变化无关。