• Android - toolbar 优化 title修改边距和navigation icon修改padding值


    1.修改title 边距

    修改边距使用系统的app属性来引入使用,即:

      xmlns:app="http://schemas.android.com/apk/res-auto"
    • 1

    比如:

    1. <android.support.v7.widget.Toolbar
    2. xmlns:app="http://schemas.android.com/apk/res-auto"
    3. android:id="@+id/toolbar"
    4. android:layout_width="match_parent"
    5. android:layout_height="wrap_content"
    6. android:layout_marginBottom="1dp"
    7. android:background="?attr/colorPrimary"
    8. android:minHeight="?attr/actionBarSize"
    9. android:orientation="vertical"
    10. app:contentInsetLeft="10dp"/>
    • 1

    当然也可以在style.xml中修改,自己研究吧;


    2.修改navigation icon的padding值

    修改padding值,就需要在style.xml中修改;在此我们修改的是navigation的pading值:

    Widget.AppCompat.Toolbar.Button.Navigation
    • 1

    比如:

    1.定义style

    1. <style name="myToolbarNavigationButtonStyle" parent="@style/Widget.AppCompat.Toolbar.Button.Navigation">
    2. <item name="android:minWidth">0dp</item>
    3. <item name="android:padding">@dimen/margin_horizontal_large</item>
    4. <item name="android:scaleType">centerInside</item>
    5. </style>
    • 1

    2.app主题中应用

    1. <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    2. <item name="toolbarNavigationButtonStyle">@style/myToolbarNavigationButtonStyle</item>
    3. </style>
    • 1

    3.title居中

    toolbar是可以自定义布局的,可以在toolbar中添加一个textview来实现,从而代替title;
    比如:

    1.布局

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <android.support.v7.widget.Toolbar
    3. android:id="@+id/toolbar"
    4. xmlns:android="http://schemas.android.com/apk/res/android"
    5. xmlns:app="http://schemas.android.com/apk/res-auto"
    6. android:layout_width="match_parent"
    7. ​ android:layout_height="?actionBarSize"
    8. android:background="@null"
    9. app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    10. app:theme="@style/AppTheme">
    11. <TextView
    12. android:id="@+id/toolbar_title"
    13. style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
    14. android:layout_width="wrap_content"
    15. android:layout_height="wrap_content"
    16. android:layout_gravity="center"/>
    17. </android.support.v7.widget.Toolbar>
    • 1

    2.初始化

    1. View v = findViewById(R.id.toolbar);
    2. if (v != null) {
    3. toolbar = (Toolbar) v;
    4. setSupportActionBar(toolbar);
    5. toolbarTitle = (TextView) v.findViewById(R.id.toolbar_title);
    6. if (toolbarTitle != null) {
    7. getSupportActionBar().setDisplayShowTitleEnabled(false);
    8. }
    9. }
    • 1

    3.使用
    设置title两种方式:
    (1)直接在setText();
    (2)在AndroidManifest.xml中指定title;
    (3)如果有baseActivity的话,解决如下:
    Activity有一个onTitleChanged的接口,在Activity的onPostCreate与setTitle中都会调用这个方法;

    1. protected void onPostCreate(@Nullable Bundle savedInstanceState) {
    2. if (!isChild()) {
    3. mTitleReady = true;
    4. onTitleChanged(getTitle(), getTitleColor());
    5. }
    6. mCalled = true;
    7. }
    • 1

    所以只需要在BaseActivity中重载这个方法就行了,如下所示 :

    1. @Override
    2. protected void onTitleChanged(CharSequence title, int color) {
    3. super.onTitleChanged(title, color);
    4. if (toolbarTitle != null) {
    5. toolbarTitle.setText(title);
    6. }
    7. }
    • 1

    参考资料 - 点我


    4.修改menu的padding值

    定义style值:

    1. <style name="mToolbarStyle" parent="@style/Widget.AppCompat.Toolbar">
    2. <item name="android:paddingRight">0dp</item>
    3. <item name="android:paddingLeft">13dp</item>
    4. </style>
    • 1

    使用:

    1. <android.support.v7.widget.Toolbar
    2. android:id="@+id/toolbar"
    3. android:layout_width="match_parent"
    4. android:layout_height="wrap_content"
    5. android:layout_marginBottom="1dp"
    6. android:background="?attr/colorPrimary"
    7. android:minHeight="?attr/actionBarSize"
    8. android:orientation="vertical"
    9. style="@style/mToolbarStyle"/>
    • 1

    上面的方法,在有些机子上会失效,大家有上面办法,请告诉我,谢谢!


    5.参考

    修改toolbar的一些属性
    toolbar学习使用

  • 相关阅读:
    Docker 基本管理
    宝塔面板服务器内存使用率高的三招解决方法
    线程篇:线程池
    Linux——文件描述符(fd)与重定向、dup/dup2
    JavaScript内置对象 - Array数组(二)- 方法
    前端例程20221115:文字颜色渐变效果
    UDP协议深度解析:从原理到应用全面剖析
    建造者模式(大话设计模式)C/C++版本
    预约美甲系统开发,上门预约美甲平台该如何运营
    linuxbingc(多线程)
  • 原文地址:https://blog.csdn.net/eeeeety6208/article/details/126435330