【问题标题】:ActionLayout not showing when LayoutDirection is set to rtl当 LayoutDirection 设置为 rtl 时,ActionLayout 不显示
【发布时间】:2017-06-20 07:36:42
【问题描述】:

我有一个 actionLayout 作为我工具栏上的通知徽章。当我将手机放在 ltr 中时,一切正常。当我将手机转到 rtl locale 时,徽章和菜单图标消失了,尽管它们在工具栏上占用空间并单击它们正在工作。谁能告诉我我做错了什么?

代码

public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
        {
            inflater.Inflate(Resource.Menu.welcome_menu, menu);

            using (var icon = menu.FindItem(Resource.Id.action_notification))
            {
                icon.Icon.ApplyDrawableTint(MobileSettingsManager.Instance.MobileSettings.Theme.NavigationBar.Icon);
                if ((Activity as BaseActivity).IsRtl() && Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
                {
                    icon.Icon.AutoMirrored = true;
                    var notification = menu.FindItem(Resource.Id.action_notification).ActionView;
                    notification.Click += async delegate
                    {
                        if (Utils.IsOnline(Context))
                            await MoveToNotifications();
                    };
                    _badge = notification.FindViewById<TextView>(Resource.Id.tv_notif_count);
                    _badge.ApplyFont();
                    _badge.Visibility = ViewStates.Gone;
                }
            }
            using (var icon = menu.FindItem(Resource.Id.action_filter))
                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>

【问题讨论】:

    标签: android xml xamarin.android


    【解决方案1】:

    在这个错误上浪费了一天之后,因为我不得不使用LinearLayout 而不是RelativeLayout 作为我的action_notification_badge.xml 的根。通常,使用RelativeLayout 时,事情会变得一团糟(例如,您不能在 googlemaps 中使用RelativeLayout 作为根元素创建自定义标记信息窗口)所以总是更喜欢LinearLayoutaction_notification_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>
    

    【讨论】:

      猜你喜欢
      • 2015-08-08
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多