天天看點

Android 預設顯示兩行的Spinner

  1.有時候看到明明是一個Spinner,但是點選之後彈出的明顯是一個自定義的對話框;如果真的是Spinner的話是不可能實作這種效果的,Spinner點選效果有兩種展現方式,一種是直接下拉顯示資料,另一種是彈出對話框,但是對話框裡也隻能是資料的清單;那如果隻有一條資料,然後這隻onClick事件可不可以實作呢?答案是否定的,Spinner是不允許設定onClickListener的,隻能設定onItemClickListener,是以無法在點選的時候彈出自定義的對話框;那之前看到的那個效果是如何實作的呢?哦然在stackflow上看到了對textView設定的style: style="@android:style/Widget.DeviceDefault.Light.Spinner"  

設定這個屬性之後會發現,textview的紮實效果跟Spinner一樣了,連selector都是一樣的...然後再添加一個onClickListener,想要什麼樣的對話框都行了.....      2.如何實作這樣的效果:

Android 預設顯示兩行的Spinner

 ? 怎麼讓Spinner的顯示有兩行呢?當然這兩行的内容肯定可以不一樣,不然就沒有意義了..... 我覺得應該有不知一種方法能實作;我的思路是在外層套一個RelativeLayout,然後先設定一個Spinner,然後下邊放一個TextView,再設定好Spinner的paddingTop,值為 textview的textsize; 這樣效果就出來了....有人可能會問為什麼要先放Spinner呢?Spinner應該在下邊才對啊,如果是RelativeLayout沒有影響的話,那位置也是随意的啊?      我一開始也是這樣想的,就先放的是TextView,結果大緻的布局效果是實作了,但是發現了一個小問題;當點選Spinner的時候,上邊的TextView的子的顔色會變深,被Spinner點選時的selector蓋住

Android 預設顯示兩行的Spinner

如果對Android界面布局的構成有了解的話就會明白為什麼後方TextView就不會被蓋住了,因為Android的布局是從上到下以壓棧的形式一個一個畫的,這樣先出現的布局就會在下邊,後出現的就在上邊,是以不會被擋住了.....這樣就完美的實作了上面的效果了....

Android 預設顯示兩行的Spinner