Android Toolbar图标添加问题:如何将图标置于工具栏右侧?
解决Toolbar图标居中,移至右侧角落的问题
嘿,我来帮你搞定这个Toolbar图标位置的问题~ 既然你用了自定义的action_bar_layout.xml,核心就是调整布局里的对齐规则,下面分几种常见的布局情况给你解决方案:
情况1:布局根节点是LinearLayout
如果你的自定义Toolbar用的是LinearLayout,只需要给根布局设置android:gravity="end|center_vertical",或者直接给图标控件设置android:layout_gravity="end|center_vertical",同时确保根布局的android:layout_width="match_parent",这样图标就会靠右且垂直居中。
示例代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:gravity="end|center_vertical" android:orientation="horizontal" android:paddingHorizontal="16dp"> <!-- 你的图标控件 --> <ImageView android:id="@+id/toolbar_right_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/your_icon_resource" /> </LinearLayout>
如果Toolbar里还有标题等其他元素,给标题控件设置android:layout_weight="1",让它占满剩余空间,图标自然就会被挤到右侧:
<LinearLayout ...> <TextView android:id="@+id/toolbar_title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="页面标题" /> <ImageView android:id="@+id/toolbar_right_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/your_icon_resource" /> </LinearLayout>
情况2:布局根节点是ConstraintLayout
如果用的是ConstraintLayout,给图标控件添加约束,让它和父布局的右侧对齐,同时保持垂直居中:
示例代码:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:paddingHorizontal="16dp"> <ImageView android:id="@+id/toolbar_right_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/your_icon_resource" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
额外注意事项
- 确保你的Toolbar在Activity布局里的
android:layout_width是match_parent,不然布局宽度不够,图标还是会居中显示。 - 如果代码里设置了
setSupportActionBar(toolbar),记得调用toolbar.setTitle("")隐藏默认标题,避免和自定义布局里的元素冲突。
内容的提问来源于stack exchange,提问作者Keselme




