1.有时候看到明明是一个Spinner,但是点击之后弹出的明显是一个自定义的对话框;如果真的是Spinner的话是不可能实现这种效果的,Spinner点击效果有两种展现方式,一种是直接下拉显示数据,另一种是弹出对话框,但是对话框里也只能是数据的列表;那如果只有一条数据,然后这只onClick事件可不可以实现呢?答案是否定的,Spinner是不允许设置onClickListener的,只能设置onItemClickListener,所以无法在点击的时候弹出自定义的对话框;那之前看到的那个效果是如何实现的呢?哦然在stackflow上看到了对textView设置的style:style="@android:style/Widget.DeviceDefault.Light.Spinner"
设置这个属性之后会发现,textview的扎实效果跟Spinner一样了,连selector都是一样的...然后再添加一个onClickListener,想要什么样的对话框都行了.....
2.如何实现这样的效果: ?
怎么让Spinner的显示有两行呢?当然这两行的内容肯定可以不一样,不然就没有意义了.....
我觉得应该有不知一种方法能实现;我的思路是在外层套一个RelativeLayout,然后先设置一个Spinner,然后下边放一个TextView,再设置好Spinner的paddingTop,值为 textview的textsize;
这样效果就出来了....有人可能会问为什么要先放Spinner呢?Spinner应该在下边才对啊,如果是RelativeLayout没有影响的话,那位置也是随意的啊?
我一开始也是这样想的,就先放的是TextView,结果大致的布局效果是实现了,但是发现了一个小问题;当点击Spinner的时候,上边的TextView的子的颜色会变深,被Spinner点击时的selector盖住;
如果对Android界面布局的构成有了解的话就会明白为什么后方TextView就不会被盖住了,因为Android的布局是从上到下以压栈的形式一个一个画的,这样先出现的布局就会在下边,后出现的就在上边,所以不会被挡住了.....这样就完美的实现了上面的效果了....