Android ActionBar自定義


  關於自定義的ActionBar的實現過程,這里做下筆記以供之后查看。

1.默認狀態

  使用Android Studio新建一個名為“ActionBar”的應用,默認actionbar如圖(1)所示。

默認ActionBar

圖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中對應項。

 圖2

  <!-- 自定義的ActionBar Style-->
<style name="CustomActionBarStyle" parent="@android:style/Widget.DeviceDefault.Light.ActionBar"> <item name="android:contentInsetEnd">0dp</item><!--右邊距為0--> <item name="android:contentInsetStart">0dp</item><!--左邊距為0--> </style>   <!-- 自定義的Theme--> <style name="CustomTheme" parent="@android:style/Theme.DeviceDefault.Light.DarkActionBar"> <item name="android:colorPrimary">@color/colorPrimary</item> <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item> <item name="android:colorAccent">@color/colorAccent</item> <item name="android:actionBarSize">@dimen/actionbar_hight</item><!--設置ActionBar的高度--> <item name="android:actionBarStyle">@style/CustomActionBarStyle</item> <item name="android:statusBarColor">@color/customBackgroung</item><!--效果和colorPrimary一樣--> <item name="android:windowLightStatusBar">true</item><!--設置StatusBar上Icon高亮--> <item name="android:windowTranslucentNavigation">false</item> </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。

圖3

 

ps:關於colorPrimary & colorPrimaryDark & colorAccent顏色的作用,如圖4所示:

圖4

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM