AppBarLayout 是繼承LinerLayout實現的一個ViewGroup容器組件,它是為了Material Design設計的App Bar,支持手勢滑動操作的,不過經常與Toolbar、CoordinatorLayout以及CollapsingToolbarLayout等一起配合使用,在說到AppBarLayout之前,我們先簡單學習一下Toolbar。和往常一樣,主要還是想總結一下我在學習過程中的一些筆記以及一些需要注意的地方。
一、Toolbar
Toolbar是在 Android 5.0 開始推出的一個 Material Design 風格的導航控件 ,Google 非常推薦大家使用 Toolbar 來作為Android客戶端的導航欄,以此來取代之前的 Actionbar,也就是說,ActionBar能做的,Toolbar都能做 。與 Actionbar 相比, Toolbar 要靈活的多。它不像 Actionbar 一樣,一定要固定在Activity的頂部,而是可以放到界面的任意位置。除此之外,在設計 Toolbar 的時候,Google也留給我們很多可以修改的余地
•設置導航欄圖標
•設置App的logo
•設置標題和子標題
•添加一個或多個的自定義控件
•設置Action Menu
為了容易理解,我們先看看效果圖:

按照效果圖,從左到右分別是導航欄圖標 、App的logo 、 標題和子標題 、 自定義控件(一個TextView和ImageView) 以及 ActionMenu
1、用Toolbar的時候,首先要隱藏原本的ActionBar
(1)通過在我們的styles.xml文件中的AppTheme標簽中設置以下屬性:
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
(2)通過修改我們繼承的主題為:Theme.AppCompat.Light.NoActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/blue</item> <item name="colorPrimaryDark">@color/blue_dark</item> <item name="colorAccent">@color/red</item> <item name="textAllCaps">false</item> </style>
(3)在Activity中調用下面這句,去掉了默認的導航欄
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
2、在布局文件中添加我們需要的Toolbar控件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?android:actionBarSize" android:background="?attr/colorPrimary"> <!--自定義控件--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="點擊" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="2dp" android:src="@mipmap/icon" /> </android.support.v7.widget.Toolbar></LinearLayout>
3、接著在 menu_main.xml 中添加 action menu 菜單項
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/add" android:icon="@mipmap/icon_add" app:showAsAction="always" /> <item android:id="@+id/add_friend" android:title="添加朋友" app:showAsAction="never" /> <item android:id="@+id/scace" android:title="掃一掃" app:showAsAction="never" /></menu>
4、在Activity 中初始化Toolbar 控件,并設置相對應的屬性
package per.lijuan.appbarlayoutdome;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.Menu;import android.view.MenuItem;import android.view.Window;import android.widget.Toast;/** * Created by lijuan on 2016/8/31. */public class Activity extends AppCompatActivity { private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_second); toolbar = (Toolbar) findViewById(R.id.toolbar); /** * 設置標題 */ toolbar.setTitle("標題"); /** * 設置子標題 */ toolbar.setSubtitle("子標題"); /** * 設置App的logo */ toolbar.setLogo(R.mipmap.ic_launcher); /** * 設置導航按鈕 */ toolbar.setNavigationIcon(R.mipmap.back); setSupportActionBar(toolbar); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } /** * 設定菜單各按
主站蜘蛛池模板:
句容市|
长岭县|
景宁|
阳朔县|
镇沅|
龙里县|
武威市|
乐至县|
怀宁县|
修水县|
金秀|
嘉祥县|
丹凤县|
林西县|
泗阳县|
平阳县|
屯昌县|
莫力|
新安县|
称多县|
阳原县|
凉山|
东至县|
望谟县|
舒城县|
洛浦县|
夏津县|
精河县|
通许县|
抚顺市|
福泉市|
黔西|
迁西县|
房山区|
健康|
色达县|
临桂县|
灵武市|
连州市|
浦东新区|
陇南市|