从ActionBar到ToolBar你用了多久(一)

来源:互联网 发布:网络预约驾驶员资格证 编辑:程序博客网 时间:2024/04/27 16:30

ActionBar

Action Bar是一种导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用户动作、界面导航等功能。

好处:它可以给提供一种全局统一的UI界面,使得用户在使用任何一款软件时都懂得该如何操作,并且ActionBar还可以自动适应各种不同大小的屏幕。

  • 添加ActionBar

只需要在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类就可以了。

例如:

 <activity; android:name=".ActionBarActivity"            android:theme="@android:style/Theme.Holo.Light.DarkActionBar"></activity>

效果图如下:



看了效果图你会发现,ActionBar默认的图标和默认标题是来自你的manifest中的一下两项:

<application

        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"

那么如何修改ActionBar的标题和图标呢?

将你显示ActionBar的Activity这两个属性改一下就行了。

 <activity android:name=".ActionBarActivity"            android:icon="@drawable/actionbar_icon"            android:label="YOUYUBE"            android:theme="@android:style/Theme.Holo.Light.DarkActionBar"></activity>

效果图如下:

在代码中,你还可以通过设置ActionBar的serDisplayShowHomeEanbled(false)和setDisplayShowTitleEanbled(fasle)来禁用操作栏的图标和标题;

具体代码如下:

 ActionBar actionBar = getActionBar() ;        /**         * false:不显示图标         * true:显示图标         */        actionBar.setDisplayShowHomeEnabled(false);        /**         * false:不显示标题         * true:显示标题         */        actionBar.setDisplayShowTitleEnabled(false);

效果图如下:

你会发现,去除了标题和图标,ActionBar还是存在的,那么怎么移除ActionBar呢??

  • 移除ActionBar

调用ActionBar的hide()方法:

ActionBar actionBar = getActionBar() ;       /**         * 移除ActionBar         */        actionBar.hide();

效果图如下:


如果你的页面不需要ActionBar,你只要把主题不设置成Theme.holo及其子类(带ActionBar的子类),或者设置成android:theme=”@android:style/Theme.Holo.NoActionBar”即可。此外,如果你的主题是Theme.holo及其子类,你在去除ActionBar之后还可以调用ActionBar的show()方法使ActionBar显示出来:

/**         * 移除ActionBar         */        actionBar.hide();        /**         * 显示ActionBar         */        actionBar.show();

效果图如下:

  • 给ActionBar添加操作项:

方法一:通过代码添加:

需要重写Activity的onCreateOptionsMenu(Menu menu)方法,对此你可以这么理解,Action Item其实就是之前的旧版本中的MenuItem,只不过把它整合到ActionBar中了。所以,当系统首次启动时,系统会调用onCreateOptionsMenu()方法给Activity的ActionBar添加操作栏和溢出菜单。

/**     * 给ActionBar添加操作项     *     * @param menu     * @return     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);        /**         * Add a new item to the menu. This item displays the given title for its         * label.         *         * @param groupId The group identifier that this item should be part of.         *        This can be used to define groups of items for batch state         *        changes. Normally use {@link #NONE} if an item should not be in a         *        group.         * @param itemId Unique item ID. Use {@link #NONE} if you do not need a         *        unique ID.         * @param order The order for the item. Use {@link #NONE} if you do not care         *        about the order. See {@link MenuItem#getOrder()}.         * @param title The text to display for the item.         * @return The newly added menu item.         */        MenuItem open = menu.add(0, 1, 0, "打开");        MenuItem close = menu.add(0, 2, 1, "关闭");        MenuItem save = menu.add(0, 3, 2, "保存");        MenuItem copy = menu.add(0, 4, 3, "复制");        MenuItem paste = menu.add(0, 4, 3, "粘贴");        /**         * 设置Item项的显示方式:         * SHOW_AS_ACTION_IF_ROOM:用这种方式,只有在有效的空间时,菜单项才能显示在操作栏中。如果没有足够的空间,这个菜单项会显示在溢出菜单中。         * SHOW_AS_ACTION_WITH_TEXT:示意操作栏要显示文本标题。操作栏会尽可能的显示这个标题,但是,如果图标有效并且受到操作栏空间的限制,文本标题有可能显示不全。         * SHOW_AS_ACTION_NEVER:从不显示在状态栏         * SHOW_AS_ACTION_ALWAYS:总是显示在状态栏         */        open.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);        close.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);        save.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);        copy.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);        paste.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);        return true;    }

效果图如下:

可以看出:"NEVER"的没显示,“Always”的都显示了。

方法二:使用布局文件的方式添加:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/item_search"        android:actionViewClass="android.widget.SearchView"        android:showAsAction="always"        android:title="搜索" />    <item        android:id="@+id/item_open"        android:showAsAction="never"        android:title="打开" />    <item        android:id="@+id/item_save"        android:showAsAction="never"        android:title="保存" />    <item        android:id="@+id/item_copy"        android:showAsAction="never"        android:title="复制" />    <item        android:id="@+id/item_paste"        android:showAsAction="never"        android:title="粘贴" />    <item        android:id="@+id/item_close"        android:showAsAction="never"        android:title="关闭" /></menu>

 @Override    public boolean onCreateOptionsMenu(Menu menu) {        super.onCreateOptionsMenu(menu);        MenuInflater menuInflater = getMenuInflater();        menuInflater.inflate(R.menu.action_items,menu);        return true;    }

效果图如下:


如果你想菜单有图标,只需要加上icon属性即可。如下:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/item_search"        android:actionViewClass="android.widget.SearchView"        android:showAsAction="always"        android:title="搜索" />    <item        android:id="@+id/item_open"        android:showAsAction="never"        android:title="打开" />    <item        android:id="@+id/item_save"        android:showAsAction="never"        android:title="保存" />    <item        android:id="@+id/item_copy"        android:showAsAction="always"        android:icon="@drawable/copy"        android:title="复制" />    <item        android:id="@+id/item_paste"        android:showAsAction="always"        android:icon="@drawable/paste"        android:title="粘贴" />    <item        android:id="@+id/item_close"        android:showAsAction="never"        android:title="关闭" /></menu>

效果图如下:

  • 响应按钮事件

当用户点击Action按钮的时候,系统会调用Activity的onOptionsItemSelected()方法,通过方法传入的MenuItem参数,我们可以调用它的getItemId()方法和menu资源中的id进行比较,从而辨别出用户点击的是哪一个Action按钮

 @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {            case R.id.item_open://打开                Toast.makeText(this, "打开", Toast.LENGTH_SHORT).show();                return true;            case R.id.item_close://关闭                Toast.makeText(this, "关闭", Toast.LENGTH_SHORT).show();                return true;            case R.id.item_save://保存                Toast.makeText(this, "保存", Toast.LENGTH_SHORT).show();                return true;            case R.id.item_copy://复制                Toast.makeText(this, "复制", Toast.LENGTH_SHORT).show();                return true;            case R.id.item_paste://粘贴                Toast.makeText(this, "粘贴", Toast.LENGTH_SHORT).show();                return true;            default:                return super.onOptionsItemSelected(item);        }    }

效果图如下:


  • 通过Action Bar图标进行导航

       /**         * 设置显示导航图标         */        ActionBar actionBar = getActionBar();        actionBar.setDisplayHomeAsUpEnabled(true);

处理部分:

    case android.R.id.home: //导航按钮的ID                finish();//关闭Activity                return true;

效果图:

实现导航功能:

参考博客:Android ActionBar完全解析,使用官方推荐的最佳导航栏(上) 

如上的处理过程,其实是和back键功能一致,但是显然,导航设置的初衷并非如此。我们需要的是不管打开几层,都回到最原始的一层,那么如何实现这种效果呢?

显示了导航按钮之后,我们还需要配置其父Activity,如下:

<activity            android:name=".ActionBarActivity"            android:icon="@drawable/actionbar_icon"            android:label="YOUYUBE"            android:theme="@android:style/Theme.Holo.Light">            <!--android4.0 之后,也可以使用Activity的android:parentActivityName属性指定父Activity-->            <meta-data                android:name="android.support.PARENT_ACTIVITY"                android:value=".MainActivity" />        </activity>

最后,就是对响应事件的处理了:

/**                 * 调用NavUtils.getParentActivityIntent()方法可以获取到跳转至父Activity的Intent,然后如果父Activity和当前Activity是                 * 在同一个Task中的,则直接调用navigateUpTo()方法进行跳转,如果不是在同一个Task中的,则需要借助TaskStackBuilder来创建一个                 * 新的Task。这样,就按照标准的规范成功实现ActionBar导航的功能了。                 */                Intent upIntent = NavUtils.getParentActivityIntent(this);                if (NavUtils.shouldUpRecreateTask(this, upIntent)) {                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {                        TaskStackBuilder.create(this).addNextIntentWithParentStack(upIntent).startActivities();                    }                } else {                    upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);                    NavUtils.navigateUpTo(this, upIntent);                }                return true;

  • 对SearchView的设置及操作

    /**     * 布局方式实现     *     * @param menu     * @return     */    @Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater menuInflater = getMenuInflater();        menuInflater.inflate(R.menu.action_items, menu);        /**         * 对SearchView的处理         * SearchView导的不是V7包         */        MenuItem searchItem = menu.findItem(R.id.item_search);        SearchView searchView = (SearchView) searchItem.getActionView();        // 配置SearchView的属性        /**         *  通过给android:showAsAction属性添加“collapseActionView”属性值,能够让操作视窗可以折叠起来。         *  如果需要,同时也可以在代码中通过expandActionView()和collapseActionView()方法来展开或折叠操作视窗。         *///        searchItem.collapseActionView();        /**         * 为 SearchView设置监听器         */        searchItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {            @Override            public boolean onMenuItemActionExpand(MenuItem item) { //扩展开的时候                Log.e("TAG", "on expand");                return true;            }            @Override            public boolean onMenuItemActionCollapse(MenuItem item) {//缩回的时候                Log.d("TAG", "on collapse");                return true;            }        });        return super.onCreateOptionsMenu(menu);    }

Overflow按钮不显示的情况(摘自郭林大神的博客)

虽然现在我们已经掌握了不少ActionBar的用法,但是当你真正去使用它的时候还是可能会遇到各种各样的问题,比如很多人都会碰到overflow按钮不显示的情况。明明是同样的一份代码,overflow按钮在有些手机上会显示,而在有些手机上偏偏就不显示,这是为什么呢?后来我总结了一下,overflow按钮的显示情况和手机的硬件情况是有关系的,如果手机没有物理Menu键的话,overflow按钮就可以显示,如果有物理Menu键的话,overflow按钮就不会显示出来。

实际上,在ViewConfiguration这个类中有一个叫做sHasPermanentMenuKey的静态变量,系统就是根据这个变量的值来判断手机有没有物理Menu键的。当然这是一个内部变量,我们无法直接访问它,但是可以通过反射的方式修改它的值,让它永远为false就可以了,代码如下所示:

private void setOverflowShowingAlways() {        try {                ViewConfiguration config = ViewConfiguration.get(this);                Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");                menuKeyField.setAccessible(true);                menuKeyField.setBoolean(config, false);        } catch (Exception e) {                e.printStackTrace();        }}这里我们在onCreate()方法的最后调用了setOverflowShowingAlways()方法,而这个方法的内部就是使用反射的方式将sHasPermanentMenuKey的值设置成false,现在重新运行一下代码

  • Overflow中的选项显示图标

默认情况下不显示图标,怎么让他显示呢??重写了onMenuOpened()方法,当overflow被展开的时候就会回调这个方法,接着在这个方法的内部通过返回反射的方法将MenuBuilder的setOptionalIconsVisible变量设置为true就可以了。

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/item_search"        android:actionViewClass="android.widget.SearchView"        android:showAsAction="always"        android:title="搜索" />    <item        android:id="@+id/item_open"        android:showAsAction="never"        android:title="打开" />    <item        android:id="@+id/item_save"        android:showAsAction="never"        android:title="保存" />    <item        android:id="@+id/item_copy"        android:showAsAction="never"        android:icon="@drawable/copy"        android:title="复制" />    <item        android:id="@+id/item_paste"        android:showAsAction="never"        android:icon="@drawable/paste"        android:title="粘贴" />    <item        android:id="@+id/item_close"        android:showAsAction="never"        android:title="关闭" /></menu>


  @Override    public boolean onMenuOpened(int featureId, Menu menu) {        if (featureId == Window.FEATURE_ACTION_BAR && menu != null) {            if (menu.getClass().getSimpleName().equals("MenuBuilder")) {                try {                    Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);                    m.setAccessible(true);                    m.invoke(menu, true);                } catch (Exception e) {                }            }        }        return super.onMenuOpened(featureId, menu);    }}

效果图如下:


  • Action Provider

ActionProvider和普通的ActionView相比最大的好处是,它能够完全的控制事件,并且可以再点击的时候显示子菜单。

  1.  在xml配置item时,在标签中加一个actionViewClass属性,在里面填入Action Provider的完整类名。这个类名可以是安卓系统提供给我们的,也可以是自定义的。
  2. 事件处理,由于其自由控制事件,只需要在onPerformDefaultAction()方法中去执行相应的逻辑即可。

下面看个小例子,你就知道怎么用了:

action_provider.xml

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context=".ActionProviderActivity">    <item        android:id="@+id/ap_share"        android:actionProviderClass="android.widget.ShareActionProvider"        android:title="分享"        android:icon="@drawable/paste"        android:showAsAction="ifRoom" /></menu>

package com.demon.frames;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.widget.ShareActionProvider;public class ActionProviderActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_acion_provider);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater menuInflater = getMenuInflater();        menuInflater.inflate(R.menu.action_provider,menu);        MenuItem item = menu.findItem(R.id.ap_share);        ShareActionProvider provider = (ShareActionProvider) item.getActionProvider();        provider.setShareIntent(getShareIntent());        return super.onCreateOptionsMenu(menu);    }    private Intent getShareIntent() {        Intent intent = new Intent(Intent.ACTION_SEND);        intent.setType("image/*");        return intent;    }}

效果图如下:


这里是使用的系统提供的类,我们还可以自定义一个ActionProvider。其实你可以点开ActionProvider的一个子类,看看他怎么实现,然后你就怎么做。这里仅仅举了一个小例子,并没有分析其子类。如下:

package com.demon.frames.bean;import android.content.Context;import android.view.ActionProvider;import android.view.MenuItem;import android.view.SubMenu;import android.view.View;import com.demon.frames.R;/** * Created by demon on 2016/10/15. * 作用:自定义ActionProvider类 */public class ActionProviderMy extends ActionProvider {    /**     * Creates a new instance.     *     * @param context Context for accessing resources.     */    public ActionProviderMy(Context context) {        super(context);    }    @Override    public View onCreateActionView() {        return null;    }    @Override    public void onPrepareSubMenu(SubMenu subMenu) {        super.onPrepareSubMenu(subMenu);        subMenu.clear();        subMenu.add("子菜单一").setIcon(R.drawable.copy).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem item) {                return true;            }        });        subMenu.add("子菜单二").setIcon(R.drawable.paste).setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {            @Override            public boolean onMenuItemClick(MenuItem item) {                return false;            }        });    }    @Override    public boolean hasSubMenu() {        return true;    }}
action_provider.xml

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context=".activity.ActionProviderActivity">    <item    android:id="@+id/ap_share"    android:actionProviderClass="android.widget.ShareActionProvider"    android:title="分享"    android:icon="@drawable/paste"    android:showAsAction="ifRoom" />    <item        android:id="@+id/ap_myself"        android:actionProviderClass="com.demon.frames.bean.ActionProviderMy"        android:title="分享"        android:icon="@drawable/copy"        android:showAsAction="ifRoom" /></menu>

效果图如下:

  • 使用分离操作栏

方法,在manifest文件所对应的Application或者Activity标签配置如下属性:

android:uiOptions="splitActionBarWhenNarrow"

效果图如下:


  • 添加导航标签

主要可以分为以下三步:

1. 实现ActionBar.TabListener接口,这个接口提供了Tab事件的各种回调

package com.demon.frames.bean;import android.app.ActionBar;import android.app.Activity;import android.app.Fragment;import android.app.FragmentTransaction;public class TabListener<T extends Fragment> implements ActionBar.TabListener {    private Fragment mFragment;    private Activity mActivity;    private String mTag;    private Class<T> mClass;    public TabListener(Activity activity, String tag, Class<T> clz) {        mActivity = activity;        mTag = tag;        mClass = clz;    }    /**     * 当Tab被重新选中的时候会调用onTabReselected()方法,如果没有特殊需求的话,通常是不需要进行处理的。     * @param tab     * @param ft     */    @Override    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {        if (mFragment == null) {//如果为空的话就创建Fragment的实例并调用            mFragment = Fragment.instantiate(mActivity, mClass.getName());            ft.add(android.R.id.content, mFragment, mTag);        } else {//如果不会空的话就调用FragmentTransaction的attach()方法            ft.attach(mFragment);        }    }    @Override    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {        if (mFragment != null) {            ft.detach(mFragment);        }    }    /**     * 通常不作处理     * @param tab     * @param ft     */    @Override    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {    }}

2.为每一个你想添加的Tab创建一个ActionBar.Tab的实例,并且调用setTabListener()方法来设置ActionBar.TabListener。

3.用setText()方法来给当前Tab设置标题。

4.最后调用ActionBar的addTab()方法将创建好的Tab添加到ActionBar中。

package com.demon.frames.activity;import android.app.ActionBar;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import android.widget.ShareActionProvider;import com.demon.frames.R;import com.demon.frames.bean.TabListener;import com.demon.frames.fragments.AlbumFragment;import com.demon.frames.fragments.ArtistFragment;public class ActionProviderActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_acion_provider);        ActionBar actionBar = getActionBar();        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        ActionBar.Tab tab = actionBar.newTab().                setText("Artist").setTabListener(                new TabListener<ArtistFragment>(this, "artist", ArtistFragment.class) );        actionBar.addTab(tab);        tab = actionBar.newTab().                setText("Album").setTabListener(                new TabListener<AlbumFragment>(this, "album", AlbumFragment.class) );        actionBar.addTab(tab);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater menuInflater = getMenuInflater();        menuInflater.inflate(R.menu.action_provider, menu);        MenuItem item = menu.findItem(R.id.ap_share);        ShareActionProvider provider = (ShareActionProvider) item.getActionProvider();        provider.setShareIntent(getShareIntent());        return super.onCreateOptionsMenu(menu);    }    private Intent getShareIntent() {        Intent intent = new Intent(Intent.ACTION_SEND);        intent.setType("image/*");        return intent;    }}

效果图如下:

  • 自定义ActionBar的主题

1.自定义背景:

首先自定义style :action_styles.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="MyActionStyle" parent="@android:style/Theme.Holo.Light">        <item name="android:actionBarStyle">@style/MyActionBar</item>    </style>    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">        <item name="android:background">#00ff00</item>    </style></resources>

其次,引用新定义的style(这里相当于系统主题的子类,就是改变了ActionBar的主题而已)

  <activity android:name=".activity.ActionProviderActivity"            android:icon="@drawable/actionbar_icon"            android:label="YOUYUBE"            android:theme="@style/MyActionStyle"></activity>

效果图如下:

你会发现这只改变了上边,下面好像不是ActionBar了似的,感觉有点怪,那么怎么使下面的和上面的一样?

只需要在你的style定义时加上这句就行<item name="android:backgroundStacked">#d27026</item>

如下:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="MyActionStyle" parent="@android:style/Theme.Holo.Light">        <item name="android:actionBarStyle">@style/MyActionBar</item>    </style>    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">        <item name="android:background">#bc0efc</item>        <item name="android:backgroundStacked">#bc0efc</item>    </style></resources>
效果图如下:

标题颜色的设置:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="MyActionStyle" parent="@android:style/Theme.Holo.Light">        <item name="android:actionBarStyle">@style/MyActionBar</item>    </style>    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">        <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>        <item name="android:background">#bc0efc</item>        <item name="android:backgroundStacked">#bc0efc</item>    </style>    <style name="MyActionBarTitleText" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">        <item name="android:textColor">#fff</item>    </style></resources>

效果图如下:


把下面的字设成白色:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="MyActionStyle" parent="@android:style/Theme.Holo.Light">        <item name="android:actionBarStyle">@style/MyActionBar</item>        <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>    </style>    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">        <!--<item name="android:titleTextStyle">@style/MyActionBarTitleText</item>-->        <item name="android:background">#bc0efc</item>        <item name="android:backgroundStacked">#bc0efc</item>    </style>    <!--<style name="MyActionBarTitleText" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">-->        <!--<item name="android:textColor">#fff</item>-->    <!--</style>-->    <style name="MyActionBarTabText" parent="@android:style/Widget.Holo.ActionBar.TabText">        <item name="android:textColor">#fff</item>    </style></resources>

效果图如下:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="MyActionStyle" parent="@android:style/Theme.Holo.Light">        <item name="android:actionBarStyle">@style/MyActionBar</item>        <item name="android:actionBarTabTextStyle">@style/MyActionBarTabText</item>    </style>    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">        <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>        <item name="android:background">#bc0efc</item>        <item name="android:backgroundStacked">#bc0efc</item>    </style>    <style name="MyActionBarTitleText" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">        <item name="android:textColor">#fff</item>    </style>    <style name="MyActionBarTabText" parent="@android:style/Widget.Holo.ActionBar.TabText">        <item name="android:textColor">#fff</item>    </style></resources>


0 0
原创粉丝点击