包含扩展操作视图的操作栏中的选项卡会在旋转时重新显示

时间:2013-02-27 13:43:34

标签: android rotation android-actionbar actionbarsherlock android-tabs

在我的Android应用中,我使用ActionBarSherlock来显示两个菜单项。一个是具有折叠操作视图的搜索项。此外,操作栏设置为ActionBar.NAVIGATION_MODE_TABS并包含三个选项卡。如果有足够的空间,或者在操作栏下方,这些选项卡将显示在操作栏中。

我的问题出现在设备中,其中有足够的空间容纳栏中的标签:

enter image description here

如果搜索操作视图已扩展,则会显示而不是选项卡,这很好:

enter image description here

但是,如果设备已旋转,则在扩展搜索操作视图时,标签会重新显示在新方向并与搜索操作视图重叠:

enter image description here

Galaxy Tab 10.1N (运行Android 4.0.4 )和 Galaxy Tab 7.0 Plus N 上的行为相同( Galaxy Tab 7.0N 运行Android 3.2 )。 有人知道如何解决这个问题吗?我感谢任何帮助!

以下是一些代码:

default_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">    
    <item android:id="@+id/SearchMenuItem"
          android:icon="@drawable/icon_search"
          android:title="@string/Search"
          android:actionLayout="@layout/search"
          android:showAsAction="always|collapseActionView"/>
    <item android:id="@+id/SettingsMenuItem"
          android:icon="@drawable/icon_settings"
          android:title="@string/Settings"
          android:showAsAction="always" />
</menu>

search.xml

<?xml version="1.0" encoding="utf-8"?>

<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/searchEditText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:paddingTop="10dip"
    android:paddingRight="8dip"
    android:hint="@string/Search"
    android:textColorHint="@color/white20"
    android:textColor="@color/white"
    android:textSize="14sp"
    android:textCursorDrawable="@null"
    android:drawableLeft="@drawable/icon_search_transparent"
    android:background="@drawable/edit_text_search"
    android:imeOptions="actionSearch"
    android:inputType="text"
    android:lines="1"
    android:maxLines="1"
    android:ellipsize="end" />

以下是我添加标签的方法:

protected void addTabBar() {
    ActionBar ab = getSupportActionBar();
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ab.addTab(ab.newTab().setText("TAB1").setTabListener(this), false);
    ab.addTab(ab.newTab().setText("TAB2").setTabListener(this), false);
    ab.addTab(ab.newTab().setText("TAB3").setTabListener(this), false);
    ab.selectTab(ab.getTabAt(0));
}

1 个答案:

答案 0 :(得分:0)

当力量流过现在它已被取消时,动作栏Sherlock中有一个错误。查看版本历史 这里Changelog ...请更新操作栏sherlock或使用操作栏compat