【问题标题】:ActionBar's action items not working on some devicesActionBar 的操作项在某些设备上不起作用
【发布时间】:2013-05-29 18:54:50
【问题描述】:

我正在使用ActionbarSherlock 开发一个应用程序以实现向后兼容性,我目前在使用Spinner 添加到ActionBar 时遇到问题。

场景:

我正在使用ActionBar.NAVIGATION_MODE_TABS,每个标签都是Fragment,并带有自己的膨胀菜单。

我没有问题膨胀和填充菜单或Spinners,但问题是Spinner 在用户单击它时没有展开。但是,当用户滑动到另一个 fragment 时,Spinner 会展开(并显示在错误的 fragment 中),并且当再次滑回时,Spinner 在正确的 fragment 中按预期工作。

这个问题只发生在 4.0.x 上进行测试时,它按预期工作。

我已经尝试调试并通过回调方法,但我无法弄清楚为什么会发生这种情况。这可能是旧版本 Android 中的错误,还是因为菜单等的处理方式不同? (不应该,因为我使用的是ActionbarSherlock)。

有人知道为什么会这样吗?

编辑:

我注意到问题出现在fragments/tabs 上,无论菜单中的操作项是什么,都没有首先添加到ViewPager。第一个tab,即Activity 启动后处于活动状态的那个,从来没有这个问题。

是我错过了什么,还是应该是这样的?

【问题讨论】:

  • 您找到解决问题的方法了吗?我想我也有类似的。

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


【解决方案1】:

试试这个,可能对你有帮助

对于微调器

 <com.actionbarsherlock.internal.widget.IcsSpinner
     android:id="@+id/spinner_id_name"
     style="@style/your_style_name"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_margin="5dp"
     android:scrollbars="none" />

在 style.xml 中应用这个

        <style name="your_style_name">
            <item name="android:dropDownWidth">fill_parent</item>
            <item name="android:background">@drawable/spinner_background</item>
            <item name="android:popupBackground">@drawable/spinner_dropdown_background</item>
            <item name="android:divider">@color/gray_darkest</item>
            <item name="android:alignmentMode">alignBounds</item>
            <item name="android:dividerHeight">2dp</item>
            <item name="android:scrollbars">none</item>
            <item name="android:scrollbarAlwaysDrawVerticalTrack">false</item>
            <item name="android:scrollbarTrackVertical">@android:color/transparent</item>
            <item name="android:dropDownSelector">@android:color/holo_dark</item>
            <item name="android:requiresFadingEdge">none</item>
        </style>

【讨论】:

  • 感谢您的回答,但问题仍然存在。查看我更新的帖子
  • 我认为你的背景图像有问题,再切片。然后你应该稍微调整微调器的背景图像,它不应该接触到屏幕边缘
  • 我不确定切片背景图像是什么意思,但正如我在更新中所写的,问题不仅涉及 Spinner,还涉及所有不在活动片段中的菜单项活动开始
  • 您的微调器和下拉项目的边缘不应接触屏幕的左右边缘。然后你会得到正确的输出
  • 之前我遇到了同样的问题,我通过调整微调器的左右边缘和下拉项目视图来解决
【解决方案2】:

我有一个非常相似的问题。在我的情况下,Activity 正在扩展另一个,并且“父”活动在onPrepareOptionsMenu() 函数中返回false。这导致了 Android 2.x 上的错误行为,在 Android 4 上一切正常。当我更改代码以返回 true 时,一切都已修复。我注意到的另一件非常奇怪的事情是,不工作的 ActionItem 图标比好的图标更暗(在另一个 Activity 中)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多