在RTL中,选项菜单项图标未正确显示! 但是在LTR中,所有内容都能很好地显示。
借助此命令,我制作了RTL程序
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
我的菜单layout.xml
<?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:gravity="start"
android:layoutDirection="rtl"
android:layout_gravity="start">
<item
android:id="@+id/action_more"
android:icon="@drawable/ic_add_white_24dp"
android:title=""
app:showAsAction="always">
<menu>
<item
android:id="@+id/action_settings"
android:icon="@drawable/ic_wb_sunny_black_24dp"
android:title="آیتم شماره 1"/>
<item
android:id="@+id/action_settings2"
android:icon="@drawable/ic_star_black_24dp"
android:title="آیتم شماره 2"/>
<item
android:id="@+id/action_settings3"
android:icon="@drawable/ic_wb_sunny_black_24dp"
android:title="آیتم شماره 3"/>
</menu>
</item>
</menu>
请帮助我解决此问题。
答案 0 :(得分:4)
我在RTL布局中遇到了同样的问题,如果您使用的是支持库或 AndroidX ,则可以应用以下简单修补程序:
res -> layout
中使用名称abc_list_menu_item_icon.xml
创建新的布局文件。将下面的代码复制到步骤1中的文件中。
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2007 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dip"
android:layout_marginRight="-8dip"
android:layout_marginStart="8dip"
android:layout_marginEnd="-8dip"
android:layout_marginTop="8dip"
android:layout_marginBottom="8dip"
android:scaleType="centerInside"
android:duplicateParentState="true"/>
答案 1 :(得分:1)
自定义工具栏弹出主题,覆盖
android:layout_marginStart
android:layout_marginEnd
首先将此行添加到您的res / values / styles.xml
<style name="PopupTheme" parent="ThemeOverlay.AppCompat.Light">
<item name="android:layout_marginStart">2dp</item>
<item name="android:layout_marginEnd">2dp</item>
</style>
然后将工具栏的popupTheme设置为“ PopupTheme”,如下所示:
......
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
app:navigationIcon="@drawable/arrow_back"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
app:popupTheme="@style/PopupTheme"
app:title="@string/toolbar_title"/>
......
干杯!
答案 2 :(得分:0)
此修复程序可在appcompat:1.3.0-alpha02
中获得在更新日志中:
在带有图标(I2f5c5)的菜单项中支持RTL: https://android-review.googlesource.com/c/platform/frameworks/support/+/1353122
答案 3 :(得分:0)
正如我所见,您使用的是 vector/xml drawable(即不是 png),在这种情况下,您可以使用 inset
,特别是 android:insetRight
属性
您可以将其应用于所有可绘制对象:(ic_wb_sunny_black_24dp, ic_star_black_24dp, & ic_wb_sunny_black_24dp)
矢量可绘制示例:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetRight="16dp">
<vector
xmlns:app="http://schemas.android.com/apk/res-auto"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
app:tint="@color/item_text">
<path
android:fillColor="@color/item_text"
android:pathData="M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M7.4,15.4L12,10.8L16.6,15.4L18,14L12,8L6,14L7.4,15.4Z" />
</vector>
</inset>
xml drawable 示例:
<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetRight="16dp">
<shape android:shape="oval">
<solid android:color="@color/highlight_1" />
<stroke
android:width="2dp"
android:color="@color/transparent" />
<size
android:width="30dp"
android:height="30dp" />
</shape>
</inset>
答案 4 :(得分:-1)
您必须使用您的语言创建另一个文件夹
ex:阿拉伯语为 layout-ar