1.系统主题Theme列表


Android Theme详细_第1张图片


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. android 开发-spinner下拉框控件的实现
  2. Android基本控件常用属性及方法
  3. Android UI控件学习笔记(二)
  4. android中系统自带样式
  5. Android按钮控件之RadioGroup和RadioButton
  6. Android系统中自带的图标&一些预定义样式&参考颜色值
  7. 【Android常用控件】EditText常用属性【二】:为文本输入框指定软
  8. Android 自定义RadioButton样式 RadioGroup横向排列并分行

随机推荐

  1. Android实例剖析笔记(二)
  2. android 自带的主题 theme 的使用
  3. iWidsets公告
  4. Android通过调用Webservice实现天气预报
  5. [android开发笔记]Unable to resolve tar
  6. android 开发布局之TableLayout
  7. Android:Service之远程服务和AIDL的创建
  8. 二维码的生成细节和原理
  9. Android(安卓)之 日期选择器
  10. 我的DIY Android(安卓)之旅--gps框架及简