Android ActionBar自定义

  关于自定义的ActionBar的实现过程,这里做下笔记以供之后查看。

1.默认状态

  使用Android Studio新建一个名为“ActionBar”的应用,默认actionbar如图(1)所示。

Android ActionBar自定义_第1张图片

图1

 

2.自定义

  自定义actionbar可以通过以下代码实现:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); //Enable自定义的View
            actionBar.setCustomView(R.layout.actionbar_custom);//设置自定义的布局:actionbar_custom
        }
    }

  其中ActionBar布局文件actionbar_custom.xml如下:

xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="@dimen/actionbar_hight"
    android:background="@color/customBackgroung">

    <TextView
        android:id="@+id/action_bar_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Custom ActionBar"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        android:gravity="center"/>
LinearLayout>

  但是真正显示自定义ActionBar如图(2),布局周围还有Margin,这个应该是需要修改Theme中对应项。

Android ActionBar自定义_第2张图片

 图2

  
<style name="CustomActionBarStyle" parent="@android:style/Widget.DeviceDefault.Light.ActionBar"> <item name="android:contentInsetEnd">0dpitem> <item name="android:contentInsetStart">0dpitem> style>    <style name="CustomTheme" parent="@android:style/Theme.DeviceDefault.Light.DarkActionBar"> <item name="android:colorPrimary">@color/colorPrimaryitem> <item name="android:colorPrimaryDark">@color/colorPrimaryDarkitem> <item name="android:colorAccent">@color/colorAccentitem> <item name="android:actionBarSize">@dimen/actionbar_hightitem> <item name="android:actionBarStyle">@style/CustomActionBarStyleitem> <item name="android:statusBarColor">@color/customBackgroungitem> <item name="android:windowLightStatusBar">trueitem> <item name="android:windowTranslucentNavigation">falseitem> style>

   最后在AndroidManifest.xml中将自定义的主题应用到对应的Activity or Application中。

xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.steve.customactionbar">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true">
        <activity android:name=".MainActivity"
            android:theme="@style/CustomTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>
        activity>
    application>

manifest>

  最终就可以得到想要的结果,如图3。

Android ActionBar自定义_第3张图片

图3

 

ps:关于colorPrimary & colorPrimaryDark & colorAccent颜色的作用,如图4所示:

Android ActionBar自定义_第4张图片

图4

参考文章:http://www.cnblogs.com/tianzhijiexian/p/4081562.html

你可能感兴趣的:(Android ActionBar自定义)