Android带返回/菜单按钮的自定义Toolbar居中问题求助
兄弟我太懂这种“以为简单结果踩满坑”的崩溃感了!自定义Toolbar看着没啥门槛,但Android自带的默认样式+嵌套布局的坑分分钟让你头大🤦♂️。从你贴的代码片段来看,大概率是冗余布局层级或者Toolbar默认内边距在搞鬼,给你几个能快速解决的方向:
砍掉多余的布局嵌套:你用了ConstraintLayout套LinearLayout完全没必要!ConstraintLayout本身就支持直接实现TextView居中效果,多一层LinearLayout不仅增加性能开销,还容易让约束逻辑混乱。直接把TextView放在ConstraintLayout里,用
start_toStartOf="parent"、end_toEndOf="parent"、top_toTopOf="parent"、bottom_toBottomOf="parent"就能完美居中,根本不需要中间那层LinearLayout。干掉Toolbar的默认内边距:Android的Toolbar默认会给内容加一个
contentInsetStart的内边距(一般是16dp),如果没关掉,你的自定义内容会莫名其妙偏右。记得在Toolbar标签里加上app:contentInsetStart="0dp"和app:contentInsetLeft="0dp"。正确关联Toolbar到ActionBar:在Activity里别忘了调用
setSupportActionBar(yourToolbar),而且如果不需要默认的标题文字,一定要加getSupportActionBar()?.setDisplayShowTitleEnabled(false),不然系统默认标题会和你的自定义TextView重叠。
给你个简化后的完整布局示例:
<android.support.v7.widget.Toolbar android:id="@+id/custom_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:contentInsetStart="0dp" app:contentInsetLeft="0dp"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定义标题" android:textSize="18sp" android:textColor="@android:color/white" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"/> </android.support.constraint.ConstraintLayout> </android.support.v7.widget.Toolbar>
另外还要检查下你的Activity主题是不是用了NoActionBar系列,比如Theme.AppCompat.Light.NoActionBar,不然系统自带的ActionBar会和你的自定义Toolbar冲突哦!
内容的提问来源于stack exchange,提问作者Saehun Sean Oh

