打算继承Spinner然后修改其弹出的Dialog的样式,但是遇上问题。在Spinner的源码中,只有两个地方见到Dialog.
一个是 public void onClick(DialogInterface dialog, int which) {
setSelection(which);
dialog.dismiss();
}
这个是用于点击某一个选项的时候用的,所以不是这个。另一个是 public boolean performClick() {
boolean handled = super.performClick();
if (!handled) {
handled = true;
Context context = getContext();
final DropDownAdapter adapter = new DropDownAdapter(getAdapter()); AlertDialog.Builder builder = new AlertDialog.Builder(context);
if (mPrompt != null) {
builder.setTitle(mPrompt);
}
builder.setSingleChoiceItems(adapter, getSelectedItemPosition(), this).show();
} return handled;
}
boolean android.widget.Spinner.performClick()
Call this view's OnClickListener, if it is defined. Returns:
True there was an assigned OnClickListener that was called, false otherwise is returned.好奇怪,是当没有定义onclicklistener的时候才调用这个函数。的确,修改这个if中的代码不影响效果,即使里面为空,Dialog也会正常运行。当我硬是把“非”去掉的话,结果就是有两个Dialog。这个表明,在其他地方有呼叫Dialog的地方。但是明明Spinner的源码,只有上面的OnClick,而且这个Onclick是响应Dialog出现后的点击的。请问有人能指导下,究竟哪里是展示Dialog的代码吗?这样我才能修改这个Spinner。谢谢指导。
一个是 public void onClick(DialogInterface dialog, int which) {
setSelection(which);
dialog.dismiss();
}
这个是用于点击某一个选项的时候用的,所以不是这个。另一个是 public boolean performClick() {
boolean handled = super.performClick();
if (!handled) {
handled = true;
Context context = getContext();
final DropDownAdapter adapter = new DropDownAdapter(getAdapter()); AlertDialog.Builder builder = new AlertDialog.Builder(context);
if (mPrompt != null) {
builder.setTitle(mPrompt);
}
builder.setSingleChoiceItems(adapter, getSelectedItemPosition(), this).show();
} return handled;
}
boolean android.widget.Spinner.performClick()
Call this view's OnClickListener, if it is defined. Returns:
True there was an assigned OnClickListener that was called, false otherwise is returned.好奇怪,是当没有定义onclicklistener的时候才调用这个函数。的确,修改这个if中的代码不影响效果,即使里面为空,Dialog也会正常运行。当我硬是把“非”去掉的话,结果就是有两个Dialog。这个表明,在其他地方有呼叫Dialog的地方。但是明明Spinner的源码,只有上面的OnClick,而且这个Onclick是响应Dialog出现后的点击的。请问有人能指导下,究竟哪里是展示Dialog的代码吗?这样我才能修改这个Spinner。谢谢指导。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货