Android 当LayoutDirection设置为rtl时,ActionLayout不显示
我的工具栏上有一个actionLayout作为通知徽章。当我的手机处于ltr时,一切正常。当我把我的手机转到rtl语言环境时,徽章和菜单图标消失了,尽管它们占据了工具栏上的空间,点击它们就可以了。谁能告诉我我做错了什么 代码Android 当LayoutDirection设置为rtl时,ActionLayout不显示,android,xml,xamarin.android,Android,Xml,Xamarin.android,我的工具栏上有一个actionLayout作为通知徽章。当我的手机处于ltr时,一切正常。当我把我的手机转到rtl语言环境时,徽章和菜单图标消失了,尽管它们占据了工具栏上的空间,点击它们就可以了。谁能告诉我我做错了什么 代码 public override void oncreateoptions菜单(IMenu菜单,菜单充气机) { 充气机。充气(Resource.Menu.welcome\u菜单,菜单); 使用(var icon=menu.FindItem(Resource.Id.actio
public override void oncreateoptions菜单(IMenu菜单,菜单充气机)
{
充气机。充气(Resource.Menu.welcome\u菜单,菜单);
使用(var icon=menu.FindItem(Resource.Id.action\u通知))
{
icon.icon.ApplyDrawableTint(MobileSettingsManager.Instance.MobileSettings.Theme.NavigationBar.icon);
if((活动作为BaseActivity.IsRtl()&&Build.VERSION.SdkInt>=BuildVersionCodes.Kitkat)
{
icon.icon.AutoMirrored=true;
var通知=menu.FindItem(Resource.Id.action\u通知).ActionView;
通知。单击+=异步委托
{
if(Utils.IsOnline(上下文))
等待移动通知();
};
_badge=notification.findviewbyd(Resource.Id.tv\u notif\u计数);
_badge.ApplyFont();
_badge.Visibility=ViewStates.Gone;
}
}
使用(var icon=menu.FindItem(Resource.Id.action\u过滤器))
icon.icon.ApplyDrawableTint(MobileSettingsManager.Instance.MobileSettings.Theme.NavigationBar.icon);
}
welcome_menu.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"
>
<item
android:id="@+id/action_filter"
android:icon="@drawable/ic_filter"
app:showAsAction="always"/>
<item
android:id="@+id/action_notification"
app:actionLayout="@layout/action_notification_badge"
android:icon="@drawable/notification_bell"
app:showAsAction="always"/>
</menu>
action_notification_badge.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:clickable="true"
android:background="@android:color/transparent"
style="@android:style/Widget.ActionButton">
<ImageView
android:id="@+id/hotlist_bell"
android:src="@drawable/notification_bell"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginEnd="8dp"
android:layout_marginTop="8dp"
android:contentDescription="bell" />
<TextView
android:id="@+id/tv_notif_count"
android:layout_width="wrap_content"
android:minWidth="17sp"
android:textSize="10sp"
android:textColor="#ffffff"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@null"
android:backgroundTint="#ff0000"
android:layout_alignTop="@id/hotlist_bell"
android:layout_alignEnd="@id/hotlist_bell"
android:layout_marginBottom="4dp"
android:layout_marginStart="4dp"
android:background="@drawable/rounded_square" />
</RelativeLayout>
rounded_square.xml
<?xml version="1.0" encoding="utf-8" ?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#a3a3a3"/>
</shape>
在这个bug上浪费了一天之后,因为我不得不使用
线性布局
而不是相对长度
作为我的操作通知_badge.xml的根。通常,使用RelativeLayout
时,事情会变得一团糟(例如,您无法在Google地图中使用RelativeLayout
作为根元素创建自定义标记信息窗口),因此始终首选LinearLayout
。action\u notification\u badge.xml的最终代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:orientation="horizontal"
style="@android:style/Widget.ActionButton" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/hotlist_bell"
android:src="@drawable/ic_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginEnd="8dp"
android:contentDescription="bell" />
<TextView
android:id="@+id/tv_notif_count"
android:layout_width="wrap_content"
android:minWidth="17sp"
android:textSize="10sp"
android:textColor="#ffffff"
android:layout_height="wrap_content"
android:layout_alignTop="@id/hotlist_bell"
android:layout_alignEnd="@id/hotlist_bell"
android:textDirection="locale"
android:textAlignment="gravity"
android:gravity="center"
android:background="@drawable/rounded_square"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:text="@null" />
</RelativeLayout>
</LinearLayout>
在这个bug上浪费了一天之后,因为我不得不使用线性布局
而不是相对长度
作为我的操作通知_badge.xml的根。通常,使用RelativeLayout
时,事情会变得一团糟(例如,您无法在Google地图中使用RelativeLayout
作为根元素创建自定义标记信息窗口),因此始终首选LinearLayout
。action\u notification\u badge.xml的最终代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:orientation="horizontal"
style="@android:style/Widget.ActionButton" >
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/hotlist_bell"
android:src="@drawable/ic_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginEnd="8dp"
android:contentDescription="bell" />
<TextView
android:id="@+id/tv_notif_count"
android:layout_width="wrap_content"
android:minWidth="17sp"
android:textSize="10sp"
android:textColor="#ffffff"
android:layout_height="wrap_content"
android:layout_alignTop="@id/hotlist_bell"
android:layout_alignEnd="@id/hotlist_bell"
android:textDirection="locale"
android:textAlignment="gravity"
android:gravity="center"
android:background="@drawable/rounded_square"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:text="@null" />
</RelativeLayout>
</LinearLayout>