打算继承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。谢谢指导。