Android中的Spinner无法触发点击item选中事件

我在自定义View中添加了一个Spinner,XML代码如下

<CustomView>
   <RelativeLayout>
      <Spinner
         android:id="@+id/spinner_sta"
         android:layout_width="72dp"
         android:layout_height="30dp"
         android:layout_alignBottom="@+id/tv_total_tips"
         android:layout_alignTop="@+id/tv_total_tips"
         android:layout_margin="0dp"
         android:layout_toEndOf="@+id/tv_total_tips"
         android:layout_toRightOf="@+id/tv_total_tips"
         android:dropDownWidth="40dp" />
   </RelativeLayout>
</CustomView>

在Java文件中这样设置SPinner,Java代码如下

private void initSpinner() {
     Spinner mSpinner = (Spinner) findViewById(R.id.spinner_sta);
     ArrayAdapter<String> adapter = new ArrayAdapter<>(mContext, R.layout.spinner_item, getResources().getStringArray(R.array.spinnerArray));
     mSpinner.setAdapter(adapter);
     mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
       @Override
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Log.i("pos", position + "");
       }

       @Override
       public void onNothingSelected(AdapterView<?> parent) {

       }
    });
}

不知道为什么,触发不了item的选中事件,只会在初始化的时候触发一次,Log打印信息如下:

I/pos: 0
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xee3f18c0
D/OpenGLRenderer: endAllStagingAnimators on 0xdc68f900 (ListPopupWindow$DropDownListView) with handle 0xddbf9770
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xee3f18c0
D/OpenGLRenderer: endAllStagingAnimators on 0xdc561500 (ListPopupWindow$DropDownListView) with handle 0xddbf94b0
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xee3f18c0
D/OpenGLRenderer: endAllStagingAnimators on 0xdc563100 (ListPopupWindow$DropDownListView) with handle 0xddbf94d0

有人遇到同样的问题吗?求指教,多谢!在线等,挺急的。

阅读 5.8k
1 个回答

自定义view需要处理好与子view的事件冲突,另外自定义view需要把路径填写完整,你还加了一个relativelayout干嘛。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题