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="/apk/res/android"xmlns:app="/apk/res-auto"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><com.qw.widget.appbar.QToolbarstyle="?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.QToolbarstyle="?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 ()
如有问题可以与我联系 QQ:435231045 请注明来源