我从代码中动态添加一组微调器, 到用户控件 - 框架布局类型(使用数据绑定来设置视图模型中的值), 这是扩大布局的功能(我从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()));
这是通过字符串值项从微调器中选择一个值。 但是在这里我有一个非常奇怪的错误:微调器的所有值都变得清晰,只有包含该字符串的值才会停留在微调器列表中。
另一个问题是,这导致了这个微调器的颜色材料设计消失了 任何想法??
答案 0 :(得分:0)
我的问题是这样解决的: 我将set设置为setAdapter的索引:
spinner.setText(spinnerArrayAdapter.getItem(s.getIndex()));
spinner.setAdapter(spinnerArrayAdapter);
但我仍然认为这是android中的一个错误。
无论如何,关于材料设计颜色的另一个问题与这种变化无关。