Spinner-DropDown 밑줄 및 위치

7562 단어
DropDown의 위치
appcompat와 Theme을 사용한 경우AppCompat.Light 주제에서 Spinner는 AppCompatSpinner로 바뀝니다.이에 따라 Spinner의 특성도 약간의 변화가 발생할 수 있다. 예를 들어 Spinner가 DropDown 모델일 때 DropDown의 기본 위치는 Spinner text 아래에 나타나지 않고 Spinner text 위에 덮어씌웠다.
android:dropDownVertical Offset="40dp"를 추가하여 DropDown을 40dp 아래로 이동시킵니다.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:drop Down Horizontal Offset = "XXdp"는 수평 방향의 편이일 것입니다. 그러나 여기에서 사용하면 효과가 없습니다.
이 두 장의 그림은vertical Offset의 전후 상황을 설정한 것이다
stackoverflow에 대한 토론http://stackoverflow.com/questions/21503142/android-spinner-dropdownhorizontaloffset-not-functioning-but-dropdownverticleoff
DropDown divider 색상 및 크기
이것은 여러 가지를 시험해 보았는데, 예를 들면, 아래의 방법과 유사하게 스타일을 수정하였는데, 모두 효력이 발생하지 않았다.

<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를 수정했는데 그 중에서 가장 중요한 것은drop Down List View Style이 작용했다.

\<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

좋은 웹페이지 즐겨찾기