Android Toolbar 居中

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 请注明来源

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android中,要实现文字居中的效果,可以使用layout_gravity属性。根据引用\[2\]中的代码,可以看到在TextView的父布局中设置了layout_gravity属性为center,这样TextView就会在父布局中居中显示。具体代码如下: ```xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary"> <!-- 其他Toolbar相关的代码 --> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:textSize="20sp" android:textColor="@color/black" android:layout_gravity="center" /> </androidx.appcompat.widget.Toolbar> </FrameLayout> ``` 在这个例子中,TextView的layout_gravity属性被设置为center,这样TextView就会在Toolbar的中心位置居中显示。 #### 引用[.reference_title] - *1* [Android中怎样设置文字居中](https://blog.csdn.net/chenjiang2936/article/details/42077599)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [android 中使文本(TextView 、button等可参考)在屏幕正中心显示的方法](https://blog.csdn.net/zxllynu/article/details/90482576)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Android标题文字居中toolbar自定义)](https://blog.csdn.net/m0_45281759/article/details/123503747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值