`
irtutsk
  • 浏览: 17783 次
社区版块
存档分类
最新评论

ActionBar的自定义样式

阅读更多

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自定义样式效果

    实现了ActionBar自定义样式效果,项目内含:源码+ 效果图+项目结构图 教程地址:http://blog.csdn.net/yangyu20121224/article/details/9087941

    ActionBar自定义布局源码工程

    - `res/values/styles.xml`:定义了自定义样式的主题。 - `MainActivity.java`:展示了如何在Activity中使用自定义布局的代码。 - `AndroidManifest.xml`:可能指定了Activity的主题。 通过研究这个源码工程,...

    ActionBar自定义样式

    本篇将深入探讨如何自定义ActionBar的样式,尤其是对ActionBar中的Tab部分进行定制。 首先,了解ActionBar的基础。在Android 3.0(API级别11)引入了ActionBar,它提供了统一的应用程序导航和操作空间。在Android ...

    自定义 actionbar 和 修改actionbar 样式

    本主题将详细探讨如何自定义ActionBar以及修改其样式。 首先,我们来看自定义ActionBar的知识点。在API 3.0以下版本,系统默认的ActionBar可能无法满足所有设计需求,因此开发者需要通过创建自定义视图来实现。这...

    Android ActionBar 自定义布局

    总之,Android的ActionBar自定义布局为开发者提供了无限的创造力,让你可以打造出独特且吸引人的应用界面。通过创建自定义布局文件并将其应用到ActionBar,你可以实现更丰富的交互和视觉效果,从而提升用户对应用的...

    Android自定义ActionBar示例

    1. 创建一个自定义样式,定义颜色、背景和文字样式等。 2. 在布局文件中添加ToolBar,并设置其属性。 3. 在Activity中通过`setSupportActionBar()`方法设置ToolBar为ActionBar。 4. 使用`getSupportActionBar()....

    Android源代码:自定义的actionbar搜索框CustomSearchView-master

    这可能通过设置自定义样式资源和主题属性来实现,例如在res/values/styles.xml文件中定义。 6. **键盘交互** 考虑到搜索框可能需要键盘输入,开发者需要处理软键盘的显示和隐藏。可能需要重写Activity的...

    自定义ActionBar样式

    现在,当你运行应用程序时,你应该能看到自定义样式的ActionBar,其中标题居中显示。当然,这只是一个基本的示例,你可以根据自己的需求进一步调整颜色、背景、边距等样式属性。 如果需要在代码中动态改变ActionBar...

    ActionBar的自定义风格 高级用法

    在项目的`res/values`目录下创建`styles.xml`文件,定义自定义样式。例如,我们可以创建一个名为`AppTheme.ActionBarCustom`的新样式,覆盖`android:actionBarStyle`属性来改变`ActionBar`的颜色、大小、字体等: `...

    ActionBar 风格自定义 参考源码

    本篇文章将深入探讨如何自定义ActionBar的样式,并通过参考源码`ABLayout`来解析实现过程。 首先,自定义ActionBar风格主要涉及到以下几个步骤: 1. **定义主题**:在`res/values/styles.xml`文件中,创建一个新的...

    Android自定义ActionBar

    Android自定义ActionBar,常用的样式

    自定义ActionBar标题居中显示

    此外,还可以通过自定义样式和主题来改变标题的样式,例如字体大小、颜色等。在res/values/styles.xml中创建一个新的主题,然后应用到Activity上: ```xml &lt;item name="actionBarStyle"&gt;@style/...

    Android 实现自定义ActionBar(仿qq)

    自定义ActionBar的第一步就是创建一个新的主题,这个主题将覆盖默认的ActionBar样式。在res/values/styles.xml文件中,定义一个新的AppTheme,例如: ```xml &lt;!-- 自定义Action Bar的颜色、文字颜色等 --&gt; ...

    自定义组件实现ActionBar

    在这个布局中,你可以添加TextView、ImageView、Button等视图组件,根据需求自定义它们的样式和行为。 3. **在Activity中加载自定义布局**:在Activity的`onCreate()`方法中,使用`setSupportActionBar()`方法设置...

    Android开发自定义actionbar

    3. 在Activity中应用自定义Action Bar:在Java代码中,获取ActionBar实例,并设置自定义布局。 ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

    自定义状态栏与actionbar颜色

    本文将详细讲解如何实现这两个功能,并重点介绍如何通过样式(style)来实现ActionBar的自定义。 首先,我们要理解状态栏(StatusBar)和ActionBar的概念。状态栏位于应用程序的顶部,通常显示时间、网络状态和通知等...

    actionbar 入门儿 demo

    在布局文件中添加Toolbar,然后在Activity中通过`setSupportActionBar()`方法将Toolbar设置为ActionBar,这样可以更灵活地自定义样式和行为。 六、处理点击事件 1. 对于Action Items,可以直接在`...

    android中自定义actionbar

    `actionbarDemo`这个文件很可能是包含了一个完整的示例项目,可以从中学习到如何在实践中应用上述理论知识。下载并运行这个示例,将有助于更好地理解和掌握自定义Action Bar的技巧。在实践中,不断调试和优化,你会...

    Android自定义ActionBar实例

    这里,`bar:type`属性用于指定ActionBar的布局样式,如`normal`、`dashboard`或`empty`。根据不同的类型,我们可以决定显示的元素,如图标、标题以及右侧的操作按钮。同时,还可以通过`bar:title`设置标题文字。 在...

Global site tag (gtag.js) - Google Analytics