How to set RTL for menu in Android

Viewed 33

In my application I want show popup menu for Recyclerview.
I want show Icon right of Text!
But for me show Icon left of Text!
I don't want use supportRtl="true" in manifest!
Menu codes :

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layoutDirection="rtl">
    <item
        android:id="@+id/image_camera_button"
        android:icon="@drawable/ic_house_heart"
        android:title="منو 1" />
    <item
        android:id="@+id/navigation_drawer_item2"
        android:icon="@drawable/ic_round_favorite_24"
        android:title="منو 2" />

    <item
        android:id="@+id/navigation_drawer_item3"
        android:icon="@drawable/ic_grid_horizontal"
        android:title="منو 3"/>
</menu>

Result of above code :
enter image description here

But I want show this icon right of text!

For show popup menu I write below code :

private fun showPopupMenu(v: View) {
    val popupMenu = PopupMenu(requireContext(), v)
    popupMenu.setOnMenuItemClickListener { item ->
        Toast.makeText(requireContext(), "You selected the action : " + item.title.toString(), Toast.LENGTH_SHORT).show()
        FancyShowCaseView.hideCurrent(requireActivity())
        true
    }

    popupMenu.inflate(R.menu.menu_my_patients)

    try {
        val fieldMPopup = PopupMenu::class.java.getDeclaredField("mPopup")
        fieldMPopup.isAccessible = true
        val mPopup = fieldMPopup.get(popupMenu)
        mPopup.javaClass.getDeclaredMethod("setForceShowIcon", Boolean::class.java).invoke(mPopup, true)
    } catch (e: Exception) {

    } finally {
        popupMenu.show()
    }
}

How can I do it?

0 Answers
Related