[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的旅行為基礎。
開始設定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>
成功改變標題顏色、大小。
使用此方式的缺點是要一層層找到相關的style和參數,相當麻煩,僅就簡單的參數修改,而且參數定義不一定知道,例如標題的textSize一直不能正常運作,試了不同方法,後來才找出設windowBackground為null。
設定下拉式分隔線樣式
下拉式選單也有樣式可改變,練習改變下拉式分隔線樣式。先以[Android Studio]下拉式選單(Spinner)筆記一@ KOEI的旅行為基礎。
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>
成功加入分隔線。
加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的旅行
留言列表