Android Theme详细




1.系统主题Theme列表



2.详解每个主题中定义item分类


一个完整的主题应该定义哪些内容呢,以Theme为例,如下:


颜色

<item name="colorForeground">@android:color/bright_foreground_dark</item>

<item name="colorForegroundInverse">@android:color/bright_foreground_dark_inverse</item>

<item name="colorBackground">@android:color/background_dark</item>

<item name="colorBackgroundCacheHint">?android:attr/colorBackground</item>

<item name="colorPressedHighlight">@color/legacy_pressed_highlight</item>

<item name="colorLongPressedHighlight">@color/legacy_long_pressed_highlight</item>

<item name="colorFocusedHighlight">@color/legacy_selected_highlight</item>

<item name="colorMultiSelectHighlight">@color/legacy_selected_highlight</item>

<item name="colorActivatedHighlight">@color/legacy_selected_highlight</item>


字体

<!-- Text styles -->

<item name="textAppearance">@android:style/TextAppearance</item>

<item name="textAppearanceInverse">@android:style/TextAppearance.Inverse</item>

 

<item name="textColorPrimary">@android:color/primary_text_dark</item>

<item name="textColorSecondary">@android:color/secondary_text_dark</item>

<item name="textColorTertiary">@android:color/tertiary_text_dark</item>

<item name="textColorPrimaryInverse">@android:color/primary_text_light</item>

<item name="textColorSecondaryInverse">@android:color/secondary_text_light</item>

<item name="textColorTertiaryInverse">@android:color/tertiary_text_light</item>

<item name="textColorPrimaryDisableOnly">@android:color/primary_text_dark_disable_only</item>

<item name="textColorPrimaryInverseDisableOnly">@android:color/primary_text_light_disable_only</item>

<item name="textColorPrimaryNoDisable">@android:color/primary_text_dark_nodisable</item>

<item name="textColorSecondaryNoDisable">@android:color/secondary_text_dark_nodisable</item>

<item name="textColorPrimaryInverseNoDisable">@android:color/primary_text_light_nodisable</item>

<item name="textColorSecondaryInverseNoDisable">@android:color/secondary_text_light_nodisable</item>

<item name="textColorHint">@android:color/hint_foreground_dark</item>

<item name="textColorHintInverse">@android:color/hint_foreground_light</item>

<item name="textColorSearchUrl">@android:color/search_url_text</item>

<item name="textColorHighlight">@android:color/highlighted_text_dark</item>

<item name="textColorHighlightInverse">@android:color/highlighted_text_light</item>

<item name="textColorLink">@android:color/link_text_dark</item>

<item name="textColorLinkInverse">@android:color/link_text_light</item>

<item name="textColorAlertDialogListItem">@android:color/primary_text_light_disable_only</item>

 

<item name="textAppearanceLarge">@android:style/TextAppearance.Large</item>

<item name="textAppearanceMedium">@android:style/TextAppearance.Medium</item>

<item name="textAppearanceSmall">@android:style/TextAppearance.Small</item>

<item name="textAppearanceLargeInverse">@android:style/TextAppearance.Large.Inverse</item>

<item name="textAppearanceMediumInverse">@android:style/TextAppearance.Medium.Inverse</item>

<item name="textAppearanceSmallInverse">@android:style/TextAppearance.Small.Inverse</item>

<item name="textAppearanceSearchResultTitle">@android:style/TextAppearance.SearchResult.Title</item>

<item name="textAppearanceSearchResultSubtitle">@android:style/TextAppearance.SearchResult.Subtitle</item>

 

<item name="textAppearanceEasyCorrectSuggestion">@android:style/TextAppearance.EasyCorrectSuggestion</item>

<item name="textAppearanceMisspelledSuggestion">@android:style/TextAppearance.MisspelledSuggestion</item>

<item name="textAppearanceAutoCorrectionSuggestion">@android:style/TextAppearance.AutoCorrectionSuggestion</item>

 

<item name="textAppearanceButton">@android:style/TextAppearance.Widget.Button</item>

 

<item name="editTextColor">@android:color/primary_text_light</item>

<item name="editTextBackground">@android:drawable/edit_text</item>

 

<item name="candidatesTextStyleSpans">@android:string/candidates_style</item>

 

<item name="textCheckMark">@android:drawable/indicator_check_mark_dark</item>

<item name="textCheckMarkInverse">@android:drawable/indicator_check_mark_light</item>

 

<item name="textAppearanceLargePopupMenu">@android:style/TextAppearance.Widget.PopupMenu.Large</item>

<item name="textAppearanceSmallPopupMenu">@android:style/TextAppearance.Widget.PopupMenu.Small</item>


按钮

<!-- Button styles -->

<item name="buttonStyle">@android:style/Widget.Button</item>

 

<item name="buttonStyleSmall">@android:style/Widget.Button.Small</item>

<item name="buttonStyleInset">@android:style/Widget.Button.Inset</item>

 

<item name="buttonStyleToggle">@android:style/Widget.Button.Toggle</item>

 

<item name="selectableItemBackground">@android:drawable/item_background</item>

<item name="borderlessButtonStyle">?android:attr/buttonStyle</item>

<item name="homeAsUpIndicator">@android:drawable/ic_ab_back_holo_dark</item>


list

<!-- List attributes -->

<item name="listPreferredItemHeight">64dip</item>

<item name="listPreferredItemHeightSmall">?android:attr/listPreferredItemHeight</item>

<item name="listPreferredItemHeightLarge">?android:attr/listPreferredItemHeight</item>

<item name="dropdownListPreferredItemHeight">?android:attr/listPreferredItemHeight</item>

<item name="textAppearanceListItem">?android:attr/textAppearanceLarge</item>

<item name="textAppearanceListItemSmall">?android:attr/textAppearanceLarge</item>

<item name="listPreferredItemPaddingLeft">6dip</item>

<item name="listPreferredItemPaddingRight">6dip</item>

<item name="listPreferredItemPaddingStart">6dip</item>

<item name="listPreferredItemPaddingEnd">6dip</item>


window

<!-- Window attributes -->

<item name="windowBackground">@android:drawable/screen_background_selector_dark</item>

<item name="windowFrame">@null</item>

<item name="windowNoTitle">false</item>

<item name="windowFullscreen">false</item>

<item name="windowOverscan">false</item>

<item name="windowIsFloating">false</item>

<item name="windowContentOverlay">@null</item>

<item name="windowShowWallpaper">false</item>

<item name="windowTitleStyle">@android:style/WindowTitle</item>

<item name="windowTitleSize">25dip</item>

<item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item>

<item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>

<item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item>

<item name="windowActionBar">false</item>

<item name="windowActionModeOverlay">false</item>

<item name="windowCloseOnTouchOutside">false</item>

<item name="windowTranslucentStatus">false</item>

<item name="windowTranslucentNavigation">false</item>


Dialog

<!-- Dialog attributes -->

<item name="dialogTheme">@android:style/Theme.Dialog</item>

<item name="dialogTitleIconsDecorLayout">@layout/dialog_title_icons</item>

<item name="dialogCustomTitleDecorLayout">@layout/dialog_custom_title</item>

<item name="dialogTitleDecorLayout">@layout/dialog_title</item>


AlertDialog


<!-- AlertDialog attributes -->

<item name="alertDialogTheme">@android:style/Theme.Dialog.Alert</item>

<item name="alertDialogStyle">@android:style/AlertDialog</item>

<item name="alertDialogCenterButtons">true</item>

<item name="alertDialogIcon">@android:drawable/ic_dialog_alert</item> 


Panel


<!-- Panel attributes -->

<item name="panelBackground">@android:drawable/menu_background</item>

<item name="panelFullBackground">@android:drawable/menu_background_fill_parent_width</item>

<!-- These three attributes do not seems to be used by the framework. Declared public though -->

<item name="panelColorBackground">#000</item>

<item name="panelColorForeground">?android:attr/textColorPrimary</item>

<item name="panelTextAppearance">?android:attr/textAppearance</item>

 

<item name="panelMenuIsCompact">false</item>

<item name="panelMenuListWidth">296dip</item> 


滚动条

<!-- Scrollbar attributes -->

<item name="scrollbarFadeDuration">250</item>

<item name="scrollbarDefaultDelayBeforeFade">300</item> 

<item name="scrollbarSize">10dip</item>

<item name="scrollbarThumbHorizontal">@android:drawable/scrollbar_handle_horizontal</item>

<item name="scrollbarThumbVertical">@android:drawable/scrollbar_handle_vertical</item>

<item name="scrollbarTrackHorizontal">@null</item>

<item name="scrollbarTrackVertical">@null</item>


文字选中(Text Selection)

<!-- Text selection handle attributes -->

<item name="textSelectHandleLeft">@android:drawable/text_select_handle_left</item>

<item name="textSelectHandleRight">@android:drawable/text_select_handle_right</item>

<item name="textSelectHandle">@android:drawable/text_select_handle_middle</item>

<item name="textSelectHandleWindowStyle">@android:style/Widget.TextSelectHandle</item>

<item name="textEditPasteWindowLayout">@android:layout/text_edit_paste_window</item>

<item name="textEditNoPasteWindowLayout">@android:layout/text_edit_no_paste_window</item>

<item name="textEditSidePasteWindowLayout">@android:layout/text_edit_side_paste_window</item>

<item name="textEditSideNoPasteWindowLayout">@android:layout/text_edit_side_no_paste_window</item>

<item name="textSuggestionsWindowStyle">@android:style/Widget.TextSuggestionsPopupWindow</item>

<item name="textEditSuggestionItemLayout">@android:layout/text_edit_suggestion_item</item>

<item name="textCursorDrawable">@null</item>


Widget样式

<!-- Widget styles -->
        <item name="absListViewStyle">@android:style/Widget.AbsListView</item>
        <item name="autoCompleteTextViewStyle">@android:style/Widget.AutoCompleteTextView</item>        
        <item name="checkboxStyle">@android:style/Widget.CompoundButton.CheckBox</item>
        <item name="checkedTextViewStyle">@android:style/Widget.CheckedTextView</item>
        <item name="dropDownListViewStyle">@android:style/Widget.ListView.DropDown</item>
        <item name="editTextStyle">@android:style/Widget.EditText</item>
        <item name="expandableListViewStyle">@android:style/Widget.ExpandableListView</item>
        <item name="expandableListViewWhiteStyle">@android:style/Widget.ExpandableListView.White</item>
        <item name="galleryStyle">@android:style/Widget.Gallery</item>
        <item name="gestureOverlayViewStyle">@android:style/Widget.GestureOverlayView</item>
        <item name="gridViewStyle">@android:style/Widget.GridView</item>
        <item name="imageButtonStyle">@android:style/Widget.ImageButton</item>
        <item name="imageWellStyle">@android:style/Widget.ImageWell</item>
        <item name="listViewStyle">@android:style/Widget.ListView</item>
        <item name="listViewWhiteStyle">@android:style/Widget.ListView.White</item>
        <item name="popupWindowStyle">@android:style/Widget.PopupWindow</item>
        <item name="progressBarStyle">@android:style/Widget.ProgressBar</item>
        <item name="progressBarStyleHorizontal">@android:style/Widget.ProgressBar.Horizontal</item>
        <item name="progressBarStyleSmall">@android:style/Widget.ProgressBar.Small</item>
        <item name="progressBarStyleSmallTitle">@android:style/Widget.ProgressBar.Small.Title</item>
        <item name="progressBarStyleLarge">@android:style/Widget.ProgressBar.Large</item>
        <item name="progressBarStyleInverse">@android:style/Widget.ProgressBar.Inverse</item>
        <item name="progressBarStyleSmallInverse">@android:style/Widget.ProgressBar.Small.Inverse</item>
        <item name="progressBarStyleLargeInverse">@android:style/Widget.ProgressBar.Large.Inverse</item>
        <item name="seekBarStyle">@android:style/Widget.SeekBar</item>
        <item name="ratingBarStyle">@android:style/Widget.RatingBar</item>
        <item name="ratingBarStyleIndicator">@android:style/Widget.RatingBar.Indicator</item>
        <item name="ratingBarStyleSmall">@android:style/Widget.RatingBar.Small</item>
        <item name="radioButtonStyle">@android:style/Widget.CompoundButton.RadioButton</item>
        <item name="scrollViewStyle">@android:style/Widget.ScrollView</item>
        <item name="horizontalScrollViewStyle">@android:style/Widget.HorizontalScrollView</item>
        <item name="spinnerStyle">@android:style/Widget.Spinner</item>
        <item name="dropDownSpinnerStyle">@android:style/Widget.Spinner.DropDown</item>
        <item name="starStyle">@android:style/Widget.CompoundButton.Star</item>
        <item name="tabWidgetStyle">@android:style/Widget.TabWidget</item>
        <item name="textViewStyle">@android:style/Widget.TextView</item>
        <item name="errorMessageBackground">@android:drawable/popup_inline_error</item>
        <item name="errorMessageAboveBackground">@android:drawable/popup_inline_error_above</item>
        <item name="webTextViewStyle">@android:style/Widget.WebTextView</item>
        <item name="webViewStyle">@android:style/Widget.WebView</item>
        <item name="dropDownItemStyle">@android:style/Widget.DropDownItem</item>
        <item name="spinnerDropDownItemStyle">@android:style/Widget.DropDownItem.Spinner</item>
        <item name="spinnerItemStyle">@android:style/Widget.TextView.SpinnerItem</item>
        <item name="dropDownHintAppearance">@android:style/TextAppearance.Widget.DropDownHint</item>
        <item name="keyboardViewStyle">@android:style/Widget.KeyboardView</item>
        <item name="quickContactBadgeOverlay">@android:drawable/quickcontact_badge_overlay_dark</item>
        <item name="quickContactBadgeStyleWindowSmall">@android:style/Widget.QuickContactBadge.WindowSmall</item>
        <item name="quickContactBadgeStyleWindowMedium">@android:style/Widget.QuickContactBadge.WindowMedium</item>
        <item name="quickContactBadgeStyleWindowLarge">@android:style/Widget.QuickContactBadge.WindowLarge</item>
        <item name="quickContactBadgeStyleSmallWindowSmall">@android:style/Widget.QuickContactBadgeSmall.WindowSmall</item>
        <item name="quickContactBadgeStyleSmallWindowMedium">@android:style/Widget.QuickContactBadgeSmall.WindowMedium</item>
        <item name="quickContactBadgeStyleSmallWindowLarge">@android:style/Widget.QuickContactBadgeSmall.WindowLarge</item>
        <item name="listPopupWindowStyle">@android:style/Widget.ListPopupWindow</item>
        <item name="popupMenuStyle">@android:style/Widget.PopupMenu</item>
        <item name="activityChooserViewStyle">@android:style/Widget.ActivityChooserView</item>

        <item name="mediaRouteButtonStyle">@android:style/Widget.DeviceDefault.MediaRouteButton</item>


Preference样式(Preference Style)

  <!-- Preference styles -->
        <item name="preferenceScreenStyle">@android:style/Preference.PreferenceScreen</item>
        <item name="preferenceFragmentStyle">@style/PreferenceFragment</item>
        <item name="preferenceCategoryStyle">@android:style/Preference.Category</item>
        <item name="preferenceStyle">@android:style/Preference</item>
        <item name="preferenceInformationStyle">@android:style/Preference.Information</item>
        <item name="checkBoxPreferenceStyle">@android:style/Preference.CheckBoxPreference</item>
        <item name="switchPreferenceStyle">@android:style/Preference.SwitchPreference</item>
        <item name="yesNoPreferenceStyle">@android:style/Preference.DialogPreference.YesNoPreference</item>
        <item name="dialogPreferenceStyle">@android:style/Preference.DialogPreference</item>
        <item name="editTextPreferenceStyle">@android:style/Preference.DialogPreference.EditTextPreference</item>
        <item name="ringtonePreferenceStyle">@android:style/Preference.RingtonePreference</item>
        <item name="preferenceLayoutChild">@android:layout/preference_child</item>
        <item name="preferencePanelStyle">@style/PreferencePanel</item>
        <item name="preferenceHeaderPanelStyle">@style/PreferenceHeaderPanel</item>
        <item name="preferenceListStyle">@style/PreferenceHeaderList</item>
        <item name="preferenceFragmentListStyle">@style/PreferenceFragmentList</item>
        <item name="preferenceFragmentPaddingSide">@dimen/preference_fragment_padding_side</item>
        <item name="detailsElementBackground">@android:drawable/panel_bg_holo_dark</item>


search控件样式

<!-- Search widget styles -->
<item name="searchWidgetCorpusItemBackground">@android:color/search_widget_corpus_item_background</item>
<!-- SearchView attributes -->
<item name="searchDropdownBackground">@android:drawable/spinner_dropdown_background</item>
<item name="searchViewTextField">@drawable/textfield_searchview_holo_dark</item><item name="searchViewTextFieldRight">@drawable/textfield_searchview_right_holo_dark</item>
<item name="searchViewCloseIcon">@android:drawable/ic_clear</item>
<item name="searchViewSearchIcon">@android:drawable/ic_search</item>
<item name="searchViewGoIcon">@android:drawable/ic_go</item>
<item name="searchViewVoiceIcon">@android:drawable/ic_voice_search</item>
<item name="searchViewEditQuery">@android:drawable/ic_commit_search_api_holo_dark</item>
<item name="searchViewEditQueryBackground">?attr/selectableItemBackground</item>

<item name="searchDialogTheme">@style/Theme.SearchBar</item>


ActionBar样式( Action bar Style)

        <!-- Action bar styles -->
        <item name="actionDropDownStyle">@android:style/Widget.Spinner.DropDown</item>
        <item name="actionButtonStyle">@android:style/Widget.ActionButton</item>
        <item name="actionOverflowButtonStyle">@android:style/Widget.ActionButton.Overflow</item>
        <item name="actionModeBackground">@android:drawable/cab_background_top_holo_dark</item>
        <item name="actionModeSplitBackground">@null</item>
        <item name="actionModeCloseDrawable">@android:drawable/ic_menu_close_clear_cancel</item>
        <item name="actionModeCutDrawable">@android:drawable/ic_menu_cut_holo_dark</item>
        <item name="actionModeCopyDrawable">@android:drawable/ic_menu_copy_holo_dark</item>
        <item name="actionModePasteDrawable">@android:drawable/ic_menu_paste_holo_dark</item>
        <item name="actionModeSelectAllDrawable">@android:drawable/ic_menu_selectall_holo_dark</item>
        <item name="actionModeShareDrawable">@android:drawable/ic_menu_share_holo_dark</item>
        <item name="actionModeFindDrawable">@android:drawable/ic_menu_find_holo_dark</item>
        <item name="actionModeWebSearchDrawable">@android:drawable/ic_menu_search</item>
        <item name="actionBarTabStyle">@style/Widget.ActionBar.TabView</item>
        <item name="actionBarTabBarStyle">@style/Widget.ActionBar.TabBar</item>
        <item name="actionBarTabTextStyle">@style/Widget.ActionBar.TabText</item>
        <item name="actionModeStyle">@style/Widget.ActionMode</item>
        <item name="actionModeCloseButtonStyle">@style/Widget.ActionButton.CloseMode</item>
        <item name="actionBarStyle">@android:style/Widget.ActionBar</item>
        <item name="actionBarSplitStyle">?android:attr/actionBarStyle</item>
        <item name="actionBarSize">@dimen/action_bar_default_height</item>
        <item name="actionModePopupWindowStyle">?android:attr/popupWindowStyle</item>
        <item name="actionMenuTextAppearance">@android:style/TextAppearance.Holo.Widget.ActionBar.Menu</item>
        <item name="actionMenuTextColor">?android:attr/textColorPrimary</item>
        <item name="actionBarWidgetTheme">@null</item>
        <item name="actionBarDivider">?android:attr/dividerVertical</item>
        <item name="actionBarItemBackground">?android:attr/selectableItemBackground</item>

        <item name="dividerVertical">@drawable/divider_vertical_dark</item>
        <item name="dividerHorizontal">@drawable/divider_vertical_dark</item>
        <item name="buttonBarStyle">@android:style/ButtonBar</item>
        <item name="buttonBarButtonStyle">?android:attr/buttonStyle</item>
        <item name="segmentedButtonStyle">@android:style/SegmentedButton</item>


其他样式

        <!-- PreferenceFrameLayout attributes -->
        <item name="preferenceFrameLayoutStyle">@android:style/Widget.PreferenceFrameLayout</item>

        <!-- NumberPicker style-->
        <item name="numberPickerStyle">@style/Widget.NumberPicker</item>

        <!-- CalendarView style-->
        <item name="calendarViewStyle">@style/Widget.CalendarView</item>

        <!-- TimePicker style -->
        <item name="timePickerStyle">@style/Widget.TimePicker</item>

        <!-- DatePicker style -->
        <item name="datePickerStyle">@style/Widget.DatePicker</item>

        <item name="fastScrollThumbDrawable">@android:drawable/scrollbar_handle_accelerated_anim2</item>
        <item name="fastScrollTrackDrawable">@null</item>
        <item name="fastScrollPreviewBackgroundRight">@android:drawable/menu_submenu_background</item>
        <item name="fastScrollPreviewBackgroundLeft">@android:drawable/menu_submenu_background</item>
        <item name="fastScrollOverlayPosition">floating</item>
        <item name="fastScrollTextColor">@android:color/primary_text_dark</item>

        <!-- Pointer style -->
        <item name="pointerStyle">@android:style/Pointer</item>

        <!-- Accessibility focused drawable. -->
        <item name="accessibilityFocusedDrawable">@android:drawable/view_accessibility_focused</item>

3、一些细化的style(特别是大量的控件的样式)定义在了styles.xml

themes.xml偏全局,styles.xml偏细化。
我直接贴出链接地址,大家查看:
https://github.com/CyanogenMod/android_frameworks_base/blob/cm-11.0/core/res/res/values/styles.xml

4、我们能做什么

两点说明:

  • 我们可以根据这些样式改变系统控件的样式
  • 但不是所有的样式我们都可以修改,比如AlertDialog,布局和一些属性都是写在硬编码中了,我们是无法修改的。

通过学习这些主题和样式,我们能准确的把握我们能定制哪些样式,哪些我们不能定制,是否需要重新写一套替代的UI控件。

这个在项目决策和进度评估上是非常重要的。





  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值