2

私の Android アプリでは、ActionBarSherlock を使用して 2 つのメニュー項目を表示しています。1 つは、アクション ビューが折りたたまれた検索項目です。さらに、アクション バーは に設定されActionBar.NAVIGATION_MODE_TABS、3 つのタブが含まれています。これらのタブは、十分なスペースがある場合はアクション バーに表示され、そうでない場合はアクション バーの下に表示されます。

私の問題は、バーのタブに十分なスペースがあるデバイスで発生します。

ここに画像の説明を入力

検索アクション ビューが拡張されている場合は、タブの代わりに表示されます。これは問題ありません。

ここに画像の説明を入力

ただし、デバイスを回転させて検索アクション ビューを拡張すると、タブが新しい​​向きで再表示され、検索アクション ビューに重なって表示されます。

ここに画像の説明を入力

Galaxy Tab 10.1N (Android 4.0.4を実行) とGalaxy Tab 7.0 Plus N (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));
}
4

1 に答える 1

0

フォース フロー オーバーが発生したときにアクション バー Sherlock にバグがありましたが、現在は削除されています。ここでバージョン履歴を参照してください

于 2014-05-06T09:27:51.750 に答える