【问题标题】:actionlayout on menuitem does nothingmenuitem 上的 actionlayout 什么都不做
【发布时间】:2014-04-22 06:14:05
【问题描述】:

我在菜单项上设置 actionLayout 并设置背景颜色和图像,但没有得到尊重。在我的活动中,我有:

getMenuInflater().inflate(R.menu.submit_action, menu);

我的 submit_action 是:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/action_submit"
        android:actionLayout="@layout/check"
        app:showAsAction="always"  />
</menu>

我的支票布局是

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="?android:attr/actionButtonStyle"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#e8e8e8"
    android:clickable="true"
    android:contentDescription="lol" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@null"
        android:scaleType="centerInside"
        android:src="@drawable/ic_action_tick" />

</RelativeLayout>

但即使进行了所有这些设置,操作栏也是这样显示的,根本没有显示我的菜单项(但它在那里,因为它响应点击,但没有出现):

【问题讨论】:

    标签: android android-actionbar android-menu


    【解决方案1】:

    尝试使用app:actionLayout="@layout/check" 而不是android:actionLayout="@layout/check"

    如果您使用ActionbarSherlockAppCompatandroid: 命名空间将不适用于MenuItems。这是因为这些库使用模仿 Android API 的自定义属性,因为它们在框架的早期版本中不存在。

    【讨论】:

    • app:actionLayout 表示您的应用程序包的名称。因此,如果您的应用程序包名称是 twitter,它将是 twitter:actionLayout
    • @clu 你可以使用任何你想要的东西。默认是使用“app”
    • @clu 不,app 是 XML 中定义的命名空间。它指的是应用程序兼容性库。如果应用程序无法解析,请将 xmlns:app="schemas.android.com/apk/res-auto" 粘贴到您的 标记中。(是的,旧评论,在此处提供更多信息以帮助那些可能会谷歌的人)。
    • 不要忘记更改支持库 23.1.0 否则菜单 xml 会让你使用 actionlayout 并且不会抱怨,但它不会工作。 compile 'com.android.support:support-v4:23.1.0'
    • 我的布局总是在右边,设置重力不起作用,你怎么能使用没有标题的项目?你没有收到 lint 错误吗??
    【解决方案2】:

    使用 Appcompact 时,菜单项会像

    <item android:id="@+id/cart"
        app:actionLayout="@layout/actionbar_cart"
        android:title="@string/action_cart"
        app:showAsAction="always"
     />
    

    【讨论】:

      【解决方案3】:

      Ben Harris 的回答是绝对正确的。但是,在某些情况下,例如使用以下属性时:

            app:showAsAction="ifRoom|collapseActionView"
      

      在 SearchView 中使用(在我的例子中),布局视图没有显示出来,这让我很头疼。 appcombat 中的操作视图似乎不支持 collapseActionView。所以在做你的事情时也要考虑到这一点。

      【讨论】:

        【解决方案4】:

        使用 app 命名空间而不是 android,它会正常工作。

        <menu xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto">
            <item android:id="@+id/action_submit"
                app:actionLayout="@layout/check"
                app:showAsAction="always"  />
        </menu>
        

        【讨论】:

          猜你喜欢
          • 2017-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-18
          • 1970-01-01
          • 2019-03-08
          • 2016-12-24
          • 2017-04-18
          相关资源
          最近更新 更多