动作栏(Sherlock)菜单项切断了内置的Spinner

时间:2013-08-29 17:08:38

标签: android android-layout android-actionbar actionbarsherlock android-spinner

我的操作栏菜单项会切断操作栏Spinner的宽度,以便Spinner的文本被截断。我已将所有菜单项设置为使用“ifRoom”,但遗憾的是,它们将原始Spinner宽度解释为可用空间。

当我有三个菜单项时,这是截断(是的,我知道第三个图标看起来与第二个图标相同):

Action bar with truncated spinner

这是我在评论第三个菜单项时得到的结果。最终,我想要一些看起来像这样的东西,但是显示溢出图标而不是搜索图标:

Action bar with full spinner but only two menu items

我使用自定义适配器填充Spinner(从BaseAdapter扩展并实现SpinnerAdapter)。

这是我的菜单XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/ab_refresh"
        android:orderInCategory="1"
        android:showAsAction="ifRoom"
        android:title="@string/ab_refresh"
        android:icon="@drawable/navigation_refresh"/>

    <item
        android:id="@+id/ab_search"
        android:orderInCategory="2"
        android:showAsAction="ifRoom|collapseActionView"
        android:title="@string/ab_search"
        android:icon="@drawable/action_search"
        android:actionViewClass="com.actionbarsherlock.widget.SearchView"/>

    <item
        android:id="@+id/ab_toggle"
        android:orderInCategory="3"
        android:showAsAction="ifRoom"
        android:title="@string/ab_latest"
        android:icon="@drawable/action_search"/>

</menu>

这是我的ab_dropdown XML(在我的自定义适配器的getView中使用):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rel"
    android:layout_width="match_parent"
    android:layout_height="30dp"
    android:gravity="fill_horizontal">

    <TextView
        android:id="@+id/txt"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="1dp" />

</RelativeLayout>

我尝试了什么:

  1. 为ab_dropdown的RelativeLayout和TextView设置minWidth为570dp。无论我是用XML还是自定义适配器的getView方法设置它都没有效果。
  2. 将RelativeLayout和TextView的layout_width硬编码为570dp。同样,对XML或代码没有影响。
  3. 我想尝试以编程方式找到操作栏Spinner以设置其宽度,但是当我tried to do this for a different reason时,我不能。
  4. 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

就个人而言,我会切换到导航抽屉并转储下拉列表导航。

话虽如此,听起来你需要两个版本的菜单资源。默认情况下,工具栏中的第三个项目为never(始终处于溢出状态),并且在较大的屏幕上为ifRoom(例如res/menu-sw600dp/)。

您还可以尝试使用AutoScaleTextView下拉列表导航标签。

操作栏的导航部分被认为是最不重要的,这就是ifRoom认为有空间的原因。