天天看點

Android Toolbar 居中Android Toolbar封裝

Android Toolbar封裝

1、QToolbar是什麼

标題欄控件,基于Toolbar控件封裝

  • 有傳回按鈕
  • 左标題
  • 居中标題
  • 子标題
  • 右側菜單

優勢:

繼承于Toolbar,Toolbar的API QToolbar都支援,會toolbar可輕松上手

效果圖:

Android Toolbar 居中Android Toolbar封裝

2、如何使用

xml中引入com.qw.widget.appbar.QToolbar控件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
    
    <com.qw.widget.appbar.QToolbar
        style="?attr/toolbarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:title="居中的标題"
        app:menu="@menu/toolbar"
        app:titleGravity="center"
        app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_24" />

    <com.qw.widget.appbar.QToolbar
        style="?attr/toolbarStyle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        app:title="居左标題"
        app:menu="@menu/toolbar"
        app:navigationIcon="@drawable/ic_baseline_arrow_back_ios_24"
        app:titleGravity="left" />
</LinearLayout>
           

屬性介紹:

app:titleGravity 标題方向值有:left,center 預設center

API:

設定文本方向

public static final int GRAVITY_LEFT = 0;
public static final int GRAVITY_CENTER = 1;
public void setTextGravity(int gravity) {
    this.titleGravity = gravity;
}
           

設定title

public void setTitle(CharSequence title) {
}
           

3、自定義樣式

<style name="Theme.QAppbar" parent="Theme.MaterialComponents.DayNight.NoActionBar">
    <!-- Primary brand color. -->
    <item name="colorPrimary">@color/purple_500</item>
    <item name="colorPrimaryVariant">@color/purple_700</item>
    <item name="colorOnPrimary">@color/white</item>
    <!-- Secondary brand color. -->
    <item name="colorSecondary">@color/teal_200</item>
    <item name="colorSecondaryVariant">@color/teal_700</item>
    <item name="colorOnSecondary">@color/black</item>
    <!-- Status bar color. -->
    <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
    <!-- Customize your theme here. -->
    <item name="toolbarStyle">@style/Toolbar</item>
</style>
<style name="Toolbar" parent="Widget.MaterialComponents.Toolbar.PrimarySurface">
    <!-- 重寫titleTextAppearance即可 -->
    <item name="titleTextAppearance">@style/TitleTextAppearance</item>
    <!-- 文字顔色 -->
    <item name="titleTextColor">?attr/colorOnPrimary</item>
    <item name="titleGravity">center</item>
</style>
<style name="TitleTextAppearance">
    <!-- 文字大小 -->
    <item name="android:textSize">@dimen/abc_text_size_title_material_toolbar</item>
    <!-- 文字顔色 -->
    <item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
           

注意:Toolbar在設定控件文本是先設定

titleTextAppearance

後設定

titleTextColor

toolbar 源碼 setTitle方法

public void setTitle(CharSequence title) {
    if (!TextUtils.isEmpty(title)) {
        if (mTitleTextView == null) {
            final Context context = getContext();
            mTitleTextView = new AppCompatTextView(context);
            mTitleTextView.setSingleLine();
            mTitleTextView.setEllipsize(TextUtils.TruncateAt.END);
            if (mTitleTextAppearance != 0) {
                mTitleTextView.setTextAppearance(context, mTitleTextAppearance);
            }
            if (mTitleTextColor != null) {
                mTitleTextView.setTextColor(mTitleTextColor);
            }
        }
        if (!isChildOrHidden(mTitleTextView)) {
            addSystemView(mTitleTextView, true);
        }
    } else if (mTitleTextView != null && isChildOrHidden(mTitleTextView)) {
        removeView(mTitleTextView);
        mHiddenViews.remove(mTitleTextView);
    }
    if (mTitleTextView != null) {
        mTitleTextView.setText(title);
    }
    mTitleText = title;
}
           

8-10行

設定文本樣式

11-13行

設定文本顔色

4、github位址

qinweiforandroid/QAppbar (github.com)

如有問題可以與我聯系 QQ:435231045 請注明來源