ActionBar的自定义样式
res/values,res/values-v11,res/values-v14下styles.xml全部改成相同内容。为了兼容android 2.x 修改res/values/styles.xml相关属性时去掉“android:”。
背景
“android:background”——ActionBar本身的背景。
“android:backgroundStacked”——ActionBar被分离时Tab的背景。
“android:backgroundSplit”——ActionBar Item在分割到底部时的背景。
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="@style/Theme.AppCompat"> <item name="actionBarStyle">@style/MyActionBar</item> </style> <style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar"> <item name="background">@drawable/A</item> <item name="backgroundStacked">@drawable/B</item> <item name="backgroundSplit">@drawableC</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"></style> </resources>
字体
“android:titleTextStyle”——ActionBar本身的字体。
“android:actionBarTabTextStyle”——ActionBar被分离时Tab的字体。
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="@style/Theme.AppCompat"> <item name="titleTextStyle">@style/MyActionBarTitleText</item> <item name="actionBarTabTextStyle">@style/MyActionBarTabText</item> </style> <style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> <item name="android:textColor">#fff</item> <item name="android:textSize">20sp</item> <item name="android:textStyle">bold</item> </style> <style name="MyActionBarTabText" parent="@style/Widget.AppCompat.ActionBar.TabText"> <item name="android:textColor">#fff</item> <item name="android:textSize">20sp</item> <item name="android:textStyle">bold</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"></style> </resources>
“android:titleTextStyle”,经测试此方法在android 2.x上无效。
附上在android 2.x有效代码。
actionBar = getSupportActionBar(); // 自定义字体 SpannableString spannableString = new SpannableString("TimeToDo"); // 设置字体 spannableString.setSpan(new TypefaceSpan("monospace"), 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 字体大小 spannableString.setSpan(new AbsoluteSizeSpan(40, true), 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // 字体颜色 spannableString.setSpan(new ForegroundColorSpan(Color.MAGENTA), 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //ActionBar本身的字体 actionBar.setTitle(spannableString);
Tab Indicator
“android:actionBarTabStyle”——Tab Indicator样式。
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="@style/Theme.AppCompat"> <item name="actionBarTabStyle">@style/MyActionBarTabs</item> </style> <style name="MyActionBarTabs" parent="@style/Widget.AppCompat.ActionBar.TabView"> <item name="android:background">@drawable/actionbar_tab_indicator</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"></style> </resources>
res/drawable/actionbar_tab_indicator.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" /> <item android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" /> <item android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/tab_unselected_pressed" /> <item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_selected_pressed" /> </selector>
Spinner
"android:actionDropDownStyle"——下拉框背景(包括选中/按下/j解除状态)。
"android:dropDownListViewStyle"——下拉列表背景(包括选中/按下/解除状态)。
"android:spinnerDropDownItemStyle"——下拉框及列表字体。
<resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar"> <item name="actionDropDownStyle">@style/MyDropDownNav</item> <item name="dropDownListViewStyle">@style/MyDropDownListView</item> <item name="spinnerDropDownItemStyle">@style/MyDropDownItemStyle</item> </style> <style name="MyDropDownNav" parent="@style/Widget.AppCompat.Base.Spinner"> <item name="android:background">@drawable/mab_spinner_background_holo_dark</item> <item name="android:popupBackground">@drawable/abc_menu_dropdown_panel_holo_dark</item> </style> <style name="MyDropDownListView" parent="@style/Widget.AppCompat.Base.ListView.DropDown"> <item name="android:listSelector">@drawable/mab_selectable_background</item> </style> <style name="MyDropDownItemStyle" parent="@style/Widget.AppCompat.Base.DropDownItem.Spinner"> <item name="android:textAppearance">@style/MyDropDownItemTextStyle</item> </style> <style name="MyDropDownItemTextStyle" parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar"> <item name="android:textColor">#FFFFFF</item> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"></style> </resources>
mab_selectable_background
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/@drawable/abc_list_pressed_holo_dark" android:state_pressed="true"/> </selector>
mab_spinner_background_holo_light.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/abc_spinner_ab_pressed_holo_dark" android:state_pressed="true"/> <item android:drawable="@drawable/abc_spinner_ab_disabled_holo_dark" android:state_enabled="false"/> <item android:drawable="@drawable/abc_spinner_ab_focused_holo_dark" android:state_focused="true" android:state_pressed="false"/> <item android:drawable="@drawable/abc_spinner_ab_default_holo_dark"/> </selector>
其他
“android:actionBarSize”——ActionBar高度。
——无
“android:actionButtonStyle”——菜单按钮背景。
——@style/Widget.AppCompat.ActionButton
“android:actionOverflowButtonStyle”——Overflow背景。
——@style/Widget.AppCompat.ActionButton.Overflow
“android:selectableItemBackground”——Home按钮背景。
——无
“android:actionBarDivider”——分隔线背景。
——无
“android:actionMenuTextAppearance”——菜单按钮文本样式。
——无
“android:actionMenuTextColor”——菜单按钮文本颜色。
——无
已知不能更改的属性:二级菜单、ActionBar标题(可通过代码实现)。
已知问题:在Android 4.x会二次加载界面(第一次为原始ActionBar样式)。
相关推荐
实现了ActionBar自定义样式效果,项目内含:源码+ 效果图+项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9087941
- `res/values/styles.xml`:定义了自定义样式的主题。 - `MainActivity.java`:展示了如何在Activity中使用自定义布局的代码。 - `AndroidManifest.xml`:可能指定了Activity的主题。 通过研究这个源码工程,...
本篇将深入探讨如何自定义ActionBar的样式,尤其是对ActionBar中的Tab部分进行定制。 首先,了解ActionBar的基础。在Android 3.0(API级别11)引入了ActionBar,它提供了统一的应用程序导航和操作空间。在Android ...
本主题将详细探讨如何自定义ActionBar以及修改其样式。 首先,我们来看自定义ActionBar的知识点。在API 3.0以下版本,系统默认的ActionBar可能无法满足所有设计需求,因此开发者需要通过创建自定义视图来实现。这...
总之,Android的ActionBar自定义布局为开发者提供了无限的创造力,让你可以打造出独特且吸引人的应用界面。通过创建自定义布局文件并将其应用到ActionBar,你可以实现更丰富的交互和视觉效果,从而提升用户对应用的...
1. 创建一个自定义样式,定义颜色、背景和文字样式等。 2. 在布局文件中添加ToolBar,并设置其属性。 3. 在Activity中通过`setSupportActionBar()`方法设置ToolBar为ActionBar。 4. 使用`getSupportActionBar()....
这可能通过设置自定义样式资源和主题属性来实现,例如在res/values/styles.xml文件中定义。 6. **键盘交互** 考虑到搜索框可能需要键盘输入,开发者需要处理软键盘的显示和隐藏。可能需要重写Activity的...
现在,当你运行应用程序时,你应该能看到自定义样式的ActionBar,其中标题居中显示。当然,这只是一个基本的示例,你可以根据自己的需求进一步调整颜色、背景、边距等样式属性。 如果需要在代码中动态改变ActionBar...
在项目的`res/values`目录下创建`styles.xml`文件,定义自定义样式。例如,我们可以创建一个名为`AppTheme.ActionBarCustom`的新样式,覆盖`android:actionBarStyle`属性来改变`ActionBar`的颜色、大小、字体等: `...
本篇文章将深入探讨如何自定义ActionBar的样式,并通过参考源码`ABLayout`来解析实现过程。 首先,自定义ActionBar风格主要涉及到以下几个步骤: 1. **定义主题**:在`res/values/styles.xml`文件中,创建一个新的...
Android自定义ActionBar,常用的样式
此外,还可以通过自定义样式和主题来改变标题的样式,例如字体大小、颜色等。在res/values/styles.xml中创建一个新的主题,然后应用到Activity上: ```xml <item name="actionBarStyle">@style/...
自定义ActionBar的第一步就是创建一个新的主题,这个主题将覆盖默认的ActionBar样式。在res/values/styles.xml文件中,定义一个新的AppTheme,例如: ```xml <!-- 自定义Action Bar的颜色、文字颜色等 --> ...
在这个布局中,你可以添加TextView、ImageView、Button等视图组件,根据需求自定义它们的样式和行为。 3. **在Activity中加载自定义布局**:在Activity的`onCreate()`方法中,使用`setSupportActionBar()`方法设置...
3. 在Activity中应用自定义Action Bar:在Java代码中,获取ActionBar实例,并设置自定义布局。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...
本文将详细讲解如何实现这两个功能,并重点介绍如何通过样式(style)来实现ActionBar的自定义。 首先,我们要理解状态栏(StatusBar)和ActionBar的概念。状态栏位于应用程序的顶部,通常显示时间、网络状态和通知等...
在布局文件中添加Toolbar,然后在Activity中通过`setSupportActionBar()`方法将Toolbar设置为ActionBar,这样可以更灵活地自定义样式和行为。 六、处理点击事件 1. 对于Action Items,可以直接在`...
`actionbarDemo`这个文件很可能是包含了一个完整的示例项目,可以从中学习到如何在实践中应用上述理论知识。下载并运行这个示例,将有助于更好地理解和掌握自定义Action Bar的技巧。在实践中,不断调试和优化,你会...
这里,`bar:type`属性用于指定ActionBar的布局样式,如`normal`、`dashboard`或`empty`。根据不同的类型,我们可以决定显示的元素,如图标、标题以及右侧的操作按钮。同时,还可以通过`bar:title`设置标题文字。 在...