close

[Android Studio]下拉式選單(Spinner)筆記四--設定標題文字大小顏色

經由設定layout可以改變Spinner選項清單文字大小顏色(參考[Android Studio]下拉式選單(Spinner)筆記三-設定文字大小顏色@ KOEI的旅行),但標題的樣式卻沒改變,本次從尋找dialog樣式設定開始,找到設定標題的style,並設定新的style來改變標題的大小和顏色。

Spinner是經alertDialogTheme來設定對話框樣式,可先編輯styles.xml,加入下列一行(MyAlertDialogStyle是之後要設定的style):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="alertDialogTheme">@style/MyAlertDialogStyle</item>
</style>

下一步是尋找alertDialogTheme原來設定值,在Android Studio中,滑鼠放在上列"alertDialogTheme" 上,按[ctrl]並點擊滑鼠,畫面就會切到values.xml中有alertDialogTheme的位置,繼續搜尋alertDialogTheme可以找到

<item name="alertDialogTheme">@style/ThemeOverlay.AppCompat.Dialog.Alert</item>

再尋找ThemeOverlay.AppCompat.Dialog.Alert樣式(一樣按[ctrl]並點擊滑鼠):

<style name="ThemeOverlay.AppCompat.Dialog.Alert" parent="Base.ThemeOverlay.AppCompat.Dialog.Alert"/>
<style name="Base.ThemeOverlay.AppCompat.Dialog" parent="Base.V7.ThemeOverlay.AppCompat.Dialog"/>
<style name="Base.ThemeOverlay.AppCompat.Dialog.Alert">
    <item name="android:windowMinWidthMajor">@dimen/abc_dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@dimen/abc_dialog_min_width_minor</item>
</style>

會發現Base.ThemeOverlay.AppCompat.Dialog.Alert並沒有樣式設定,改搜尋Base.ThemeOverlay.AppCompat.Dialog的parent:Base.V7.ThemeOverlay.AppCompat.Dialog

<style name="Base.V7.ThemeOverlay.AppCompat.Dialog" parent="Base.ThemeOverlay.AppCompat">
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:colorBackground">?attr/colorBackgroundFloating</item>
    <item name="android:windowFrame">@null</item>
    <item name="android:windowTitleStyle">@style/RtlOverlay.DialogWindowTitle.AppCompat</item>
    <item name="android:windowTitleBackgroundStyle">@style/Base.DialogWindowTitleBackground.AppCompat</item>
    <item name="android:windowBackground">@drawable/abc_dialog_material_background</item>
   ...
</style>

找到windowTitleStyle就是設定標題的參數,繼續尋找它的style RtlOverlay.DialogWindowTitle.AppCompat

<style name="RtlOverlay.DialogWindowTitle.AppCompat" parent="Base.DialogWindowTitle.AppCompat">
</style>

相同方式繼續往parent找

<style name="Base.DialogWindowTitle.AppCompat" parent="android:Widget">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@style/TextAppearance.AppCompat.Title</item>
</style>
<style name="TextAppearance.AppCompat.Title" parent="Base.TextAppearance.AppCompat.Title"/>

最後找到的是設定文字的大小跟顏色參數

<style name="Base.TextAppearance.AppCompat.Title">
    <item name="android:textSize">@dimen/abc_text_size_title_material</item>
    <item name="android:textColor">?android:textColorPrimary</item>
</style>

 

[Android Studio]下拉式選單(Spinner)筆記二-dialog模式@ KOEI的旅行為基礎。

Spinner

開始設定alertDialogTheme的style:MyAlertDialogStyle,parent設成與原來相同的Base.V7.ThemeOverlay.AppCompat.Dialog,也可以設背景顏色(background),另外設定windowTitleStyle為自己訂的文字樣式MyTextAppearance,在MyTextAppearance設定文字大小顏色等參數。注意需要把windowBackground清為null,否則高度被限制住,textSize不能正常運作! style範例如下:

<style name="MyAlertDialogStyle" parent="Base.V7.ThemeOverlay.AppCompat.Dialog">
    <item name="android:background">#FFFF00</item>
    <item name="android:windowBackground">@null</item>
    <item name="android:windowTitleStyle">@style/MyTextAppearance</item>
</style>

<style name="MyTextAppearance" >
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textSize">30dp</item>
    <item name="android:background">#0000FF</item>
    <item name="android:textStyle">bold</item>
</style>

成功改變標題顏色、大小。

Spinner

使用此方式的缺點是要一層層找到相關的style和參數,相當麻煩,僅就簡單的參數修改,而且參數定義不一定知道,例如標題的textSize一直不能正常運作,試了不同方法,後來才找出設windowBackground為null。

 

設定下拉式分隔線樣式

下拉式選單也有樣式可改變,練習改變下拉式分隔線樣式。先以[Android Studio]下拉式選單(Spinner)筆記一@ KOEI的旅行為基礎。

spinner

 

Spinner是經dropDownListViewStyle來設定下拉式選單樣式,可先編輯styles.xml,加入下列一行(SpinnerDivider是之後要設定的分隔線style):

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="android:dropDownListViewStyle">@style/SpinnerDivider</item>
</style>

values.xml找到dropDownListViewStyle及style的參數divider,可看到預設沒有分隔線(null)。

<item name="android:dropDownListViewStyle">@style/Widget.AppCompat.ListView.DropDown</item>
<style name="Widget.AppCompat.ListView.DropDown" parent="Base.Widget.AppCompat.ListView.DropDown"/>
<style name="Base.Widget.AppCompat.ListView.DropDown">
    <item name="android:divider">@null</item>
</style>

 

開始設定dropDownListViewStyle的style:SpinnerDivider,parent設成與原來相同的Widget.AppCompat.ListView.DropDow,並設定分隔線的顏色跟高度(divider、dividerHeight),如下方style:

<style name="SpinnerDivider" parent="Widget.AppCompat.ListView.DropDown">
    <item name="android:divider">@color/colorAccent</item>
    <item name="android:dividerHeight">1dp</item>
</style>

 

成功加入分隔線。

Spinner

 

加dialog標題和分隔線的完整styles.xml如下:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:dropDownListViewStyle">@style/SpinnerDivider</item>
        <item name="alertDialogTheme">@style/MyAlertDialogStyle</item>
    </style>
    <style name="SpinnerDivider" parent="Widget.AppCompat.ListView.DropDown">
    <item name="android:divider">@color/colorAccent</item>
    <item name="android:dividerHeight">1dp</item>
</style>

    <style name="MyAlertDialogStyle" parent="Base.V7.ThemeOverlay.AppCompat.Dialog">
        <item name="android:background">#FFFF00</item>
        <item name="android:windowBackground">@null</item>
        <item name="android:windowTitleStyle">@style/MyTextAppearance</item>
    </style>

    <style name="MyTextAppearance" >
        <item name="android:textColor">@android:color/white</item>
        <item name="android:textSize">30dp</item>
        <item name="android:background">#0000FF</item>
        <item name="android:textStyle">bold</item>
    </style>
</resources>

 

客製化自訂樣式選單,可參考[Android Studio]下拉式選單(Spinner)筆記五--客製化選單@ KOEI的旅行

 

arrow
arrow

    KOEI 發表在 痞客邦 留言(0) 人氣()