我在自定义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
有人遇到同样的问题吗?求指教,多谢!在线等,挺急的。
自定义view需要处理好与子view的事件冲突,另外自定义view需要把路径填写完整,你还加了一个relativelayout干嘛。