我在某些 android 设备中遇到了 Spinner 的问题:我单击了一个项目,但微调器的位置没有改变。
我在 Galaxy S2 (4.0.3 API 15) 和 Avvio 中文设备 (4.0.4 API 15) 上看到了这个问题。它们中的每一个的 Log 行为都有所不同,如下所示:
阿维奥:
I/InputDispatcher(234): channel '41c8acc8 PopupWindow:418f39c8 (server)' ~ abortBrokenDispatchCycle - notify=false
Galaxy S2:
I/InputDispatcher(1995): Delivering touch to current input target: action: 1, channel 'xxxx'
这是我的xml
配置:
<Spinner
android:id="@+id/status_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="0dip"
android:paddingLeft="5dp"
android:layout_marginBottom="5dp" />
和(剥离)代码:
Spinner status_spinner;
protected void onCreate(Bundle savedInstanceState) {
status_spinner = (Spinner)findViewById(R.id.status_spinner);
status_spinner.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0, View view, int position, long id) {
Log.d(TAG, "Selected status code " + position);
}
public void onNothingSelected(AdapterView<?> adapter){
Log.d(TAG, "Nothing selected");
}
});
}
在这些消息之后没有任何反应,也不会触发任何事件。我得到了第一个微调器事件,它在微调器初始化并选择第一个项目时触发,但之后仅此而已。
这确实适用于其他设备,从 API 级别 8 到最新设备。我真的被这个困住了,有什么线索吗?
已解决:微调器包含在LinearLayout
已android:animateLayoutChanges
设置为的 a 中true
。更改它以false
解决问题。