You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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_widthmatch_parent,不然布局宽度不够,图标还是会居中显示。
  • 如果代码里设置了setSupportActionBar(toolbar),记得调用toolbar.setTitle("")隐藏默认标题,避免和自定义布局里的元素冲突。

内容的提问来源于stack exchange,提问作者Keselme

火山引擎 最新活动