Spinner-DropDown下划线和位置

当使用了appcompat和Theme.AppCompat.Light主题时,Spinner会被替换为AppCompatSpinner。随之Spinner的特性也会发生一些变化,比如Spinner为DropDown mode时,DropDown的默认位置并没有出现在Spinner text的下面,而且覆盖在了Spinner text的上面。

加入android:dropDownVerticalOffset=”40dp”
使DropDown向下偏移40个dp。DropDown是一个PopupWindow。

<Spinner
            android:id="@+id/layout_videoplayer_playrate"
            style="@style/VideoDropDownNav"
            android:layout_width="65dp"
            android:spinnerMode="dropdown"
            android:dropDownVerticalOffset="40dp"
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/layout_videoplayer_seperator1"
            android:layout_toStartOf="@id/layout_videoplayer_seperator1" />

android:dropDownHorizontalOffset=”XXdp”,应该是水平方向的偏移,但是我这里使用并没有生效。

这两张图就是设置了verticalOffset前后的情况

修改前

修改后

stackoverflow上有关的讨论http://stackoverflow.com/questions/21503142/android-spinner-dropdownhorizontaloffset-not-functioning-but-dropdownverticleoff

这个试了好几种,比如类似下面的做法,修改style,都没有生效。


<Spinner
            android:id="@+id/layout_videoplayer_playrate"
            style="@style/VideoDropDownNav"
            android:layout_width="65dp"
            android:spinnerMode="dropdown"
            android:dropDownVerticalOffset="40dp"
            android:layout_height="fill_parent"
            android:layout_toLeftOf="@id/layout_videoplayer_seperator1"
            android:layout_toStartOf="@id/layout_videoplayer_seperator1" />
//分隔符
\<style name="VideoDropDownNav" parent="@android:style/Widget.Spinner">
 <item name="android:background">@drawable/videoplayer_alpha_background</item>
        <item name="android:popupBackground">@drawable/videoplayer_top_layout_background</item>
        <item name="android:dropDownSelector">@null</item>
        <item name="android:dropDownVerticalOffset">40dp</item>
        <item name="android:divider">#aaaaaa</item>
        <item name="android:dividerHeight">1dp</item>
</style>

最后修改了Activity的Theme,里面最主要的是dropDownListViewStyle起了作用。


\<style name="AppThemeNoActionBar" parent="AppTheme">
        <item name="windowNoTitle">true</item>
        <!-- <item name="android:windowActionBar" tools:targetApi="11">false</item> -->
        <item name="windowActionBar">false</item>
        <item name="actionBarStyle">@style/Styled.ActionBar</item>
        <item name="android:actionBarStyle" tools:targetApi="11">@style/Styled.ActionBar</item>
        <item name="android:actionMenuTextAppearance" tools:targetApi="11">@style/MenuTextStyle</item>
        <item name="actionMenuTextAppearance">@style/MenuTextStyle</item>
        <item name="android:dropDownListViewStyle">@style/SpinnerDropDownStyle</item>
        <item name="vpiIconPageIndicatorStyle">@style/Widget.IconPageIndicator</item>
        <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>
    </style>

\<style name="SpinnerDropDownStyle" parent="android:style/Widget.ListView.DropDown">
        <item name="android:divider">#aaaaaa</item>
        <item name="android:dividerHeight">1px</item>
    </style>

这种方案在一个activity里多个spinner,多个样式时没法解决。多个时不如直接修改DropDown的item对应的layout,直接在里面加入divider。

相关资料http://stackoverflow.com/questions/10916658/android-cannot-style-spinner-divider/13144302#13144302

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值