Android Toolbar封裝
1、QToolbar是什麼
标題欄控件,基于Toolbar控件封裝
- 有傳回按鈕
- 左标題
- 居中标題
- 子标題
- 右側菜單
優勢:
繼承于Toolbar,Toolbar的API QToolbar都支援,會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 請注明來源