【问题标题】:CustomActionBar with NavigationDrawer带有 NavigationDrawer 的 CustomActionBar
【发布时间】:2013-11-29 21:18:46
【问题描述】:

如何使用 NavigationDrawer 和 CustomView 创建 ActionBar。像这样:

请有任何想法、建议和解决方案

【问题讨论】:

    标签: android android-actionbar custom-view navigation-drawer


    【解决方案1】:

    下面的代码展示了如何改变ActionBar的颜色和文本、潜文本颜色。将此文件放在 values/ 文件夹中,并将其命名为 theme.xml

    <!-- the theme applied to the application or activity -->
    <style name="CustomActionBarTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
    
        <!-- Support library compatibility -->
        <item name="actionBarStyle">@style/MyActionBar</item>
    </style>
    
    <!-- ActionBar styles -->
    <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="android:background">@color/actionBarBG</item>
        <item name="android:backgroundSplit">@color/actionBarBG</item>
        <item name="android:subtitleTextStyle">@style/Theme.TitleTextStyle</item>
        <!-- Support library compatibility -->
        <item name="background">@color/actionBarBG</item>
    </style>
    
    <!-- STYLE TO CHAGE THE TITLE COLOR OF ACTION BAR -->
    <style name="Theme.TitleTextStyle" parent="@android:style/Widget.TextView">
        <item name="android:textColor">#BDD6E0</item>
    </style>
    

    在您的清单中,在活动标签中应用如下活动:

    android:theme="@style/CustomActionBarTheme" 
    

    对于 ActionBar 中的 ActionItems,您可以使用以下代码:例如。 action_items.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    
        <item
            android:id="@+id/action_home"
            android:icon="@drawable/action_home"
            android:showAsAction="ifRoom"
            android:title="@string/home"
            yourapp:showAsAction="ifRoom"/>
    
        <item
            android:id="@+id/action_logout"
            android:icon="@drawable/action_logout"
            android:showAsAction="ifRoom"
            yourapp:showAsAction="ifRoom"
            android:title="@string/logout"/>
    
    </menu>
    

    将此 XML 文件放在 /Menu 文件夹中。

    然后在活动中:

    @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.action_items, menu);
    
            return super.onCreateOptionsMenu(menu);
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Take appropriate action for each action item click
            switch (item.getItemId()) {
            case R.id.action_home:
                Intent intent = new Intent(this, CustomerMenuActivity.class);
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
                return true;
            case R.id.action_logout:
                // location found
                Intent intent2 = new Intent(this, LoginActivity.class);
                intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent2);
                return true;
            default:
                return super.onOptionsItemSelected(item);
            }
        }
    

    【讨论】:

    • 是的。我在最低 API 级别 8 中使用它
    • 对于 NavigationDrawer,请检查:androidhive.info/2013/11/…
    • 我将编辑我的答案并添加一些代码。还要检查我给你的链接。它拥有一切
    • 对于较低的 API 支持,请使用 SherlockActionBar 或 AppCompat。这个博客有所有的例子:wptrafficanalyzer.in/blog
    • 不客气。我浪费了一周的时间来实现这一目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    相关资源
    最近更新 更多