2

我在某些 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 到最新设备。我真的被这个困住了,有什么线索吗?

已解决:微调器包含在LinearLayoutandroid:animateLayoutChanges设置为的 a 中true。更改它以false解决问题。

4

0 回答 0