Android 工具栏将菜单项的图标移动到右侧

Android Toolbar move icon of MenuItem to right side

我在 QuickPic 这样的应用程序中看到过,他们设法将图标放在右侧

我尝试做同样的事情,但后来我意识到图标似乎是硬编码显示在左侧的。

下面是我的menu.xml

<menu>
    <item android:id="@+id/sort_by_name"
        android:title="By name"
        android:icon="@drawable/ic_arrow_downward_gray_24dp"
        />

    <item android:id="@+id/sort_by_date"
        android:title="By date"/>

    <item android:id="@+id/sort_by_path"
        android:title="By path"/>
</menu>

那么有什么办法可以把图标移到右边吗?

XML 中没有这样的选项,但您可以在 Java/Kotlin 中进行。首先尝试在 onCreateOptionsMenu 中使用 ImageSpan 和 re-set 整个文本。 HERE 你有一些如何处理这个跨度的例子

您始终可以使用 android:actionLayout 并创建您自己的视图,以您想要的方式呈现。

示例:

your_custum_view:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:orientation="vertical">
<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/tvMenu"
    android:clickable="true"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    app:drawableRightCompat="@drawable/ic_up_arrow"
    android:drawablePadding="@dimen/margin_medium"
    android:focusable="true"
    android:gravity="center"
    android:padding="6dp"
    android:orientation="vertical"
    android:text="By Name" />

your_menu:

<item
        android:id="@+id/nv_create"
        android:icon="@drawable/ic_create_dw"
        android:title="Create"
        app:actionLayout="@layout/menu_sign"
        app:showAsAction="always" />