1

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

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

带有截断微调器的操作栏

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

带有完整微调器但只有两个菜单项的操作栏

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

这是我的菜单 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 设置570dp 的minWidth。无论我是在 XML 中还是在自定义适配器的 getView 方法中设置它都没有效果。
  2. 将 RelativeLayout 和 TextView 的 layout_width 硬编码为 570dp。同样,对 XML 或代码没有影响。
  3. 我会尝试以编程方式找到操作栏 Spinner 以设置其宽度,但是当我出于不同的原因尝试这样做时,我做不到。

有任何想法吗?

4

1 回答 1

0

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

话虽如此,听起来您需要两个版本的菜单资源。默认情况下让第三个项目never在工具栏中(总是在溢出中),并让它ifRoom在更大的屏幕上(例如,res/menu-sw600dp/)。

您还可以AutoScaleTextView对下拉列表导航标签进行试验。

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

于 2013-08-29T17:16:10.330 回答