以编程方式创建的微调器无法打开
Posted
技术标签:
【中文标题】以编程方式创建的微调器无法打开【英文标题】:Programmatically created spinner doesn't open 【发布时间】:2014-04-29 13:04:42 【问题描述】:我以编程方式创建了一个微调器:
ArrayAdapter<ServiceObject> medicineArrayAdapter = new ArrayAdapter<ServiceObject>(MedicineActivity.this, android.R.layout.simple_spinner_dropdown_item, medicines);
medicineArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner = new Spinner(MedicineActivity.this, getSpinnerAttrs(), 0);
spinner.setAdapter(medicineArrayAdapter);
spinner.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
spinner.setVisibility(View.VISIBLE);
buttonLayout.addView(spinner, index);
getSpinnerAttrs() 的位置:
AttributeSet as = null;
Resources r = getResources();
XmlResourceParser parser = r.getLayout(R.layout.fragment_medicine);
int state = 0;
do
try
state = parser.next();
catch (XmlPullParserException xppe)
xppe.printStackTrace();
catch (IOException ioe)
ioe.printStackTrace();
if (state == XmlPullParser.START_TAG)
if (parser.getName().equals("Spinner"))
as = Xml.asAttributeSet(parser);
break;
while(state != XmlPullParser.END_DOCUMENT);
return as;
fragment_medicine 中的 Spinner 是:
<Spinner
android:layout_
android:layout_
android:background="@android:drawable/btn_dropdown"
android:spinnerMode="dropdown"
android:visibility="invisible"/>
/>
正常显示,但是点击后打不开。 . .
【问题讨论】:
你能检查药物数组是否为空吗? @tasomaniac 已经满了,从spinner的选中项中可以看到 【参考方案1】:最后我以另一种方式做到了。
我只是以编程方式添加了属性,而没有像这样从 xml 文件中读取它们:
spinner.setBackgroundResource(android.R.drawable.btn_dropdown);
而且效果很好。
【讨论】:
以上是关于以编程方式创建的微调器无法打开的主要内容,如果未能解决你的问题,请参考以下文章
不可能让我的 DatePickerDialog 以编程方式使用微调器样式
magnific popup:以编程方式将内容从弹出表单更改为模态微调器,然后返回表单
无法在 setTimeout 回调中以编程方式打开 Vuetify 对话框