5

ActionBarSherlockライブラリを使用してAndroidアプリケーションを開発しています。あるアクティビティでは、タブ付きナビゲーションを折りたたみActionBar(下部のアクションアイテム)と組み合わせて使用​​します。

Activityこの画像では、現在の状態を確認できます。タブは2行目にプッシュされています。

現在のActionBar


次の図ではActivity、私が望む方法を見ることができます。タブは、2番目の行ではなく、一番上の行にある必要があります。ActionBarとドキュメントをすでに読みましたActionBarSherlockが、この動作を強制する方法が見つかりませんでした。

希望するActionBarレイアウト

これは、の作成に使用される現在のコードですActionBar

public class AdminActivity extends SherlockFragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_admin);

    ActionBar actionBar = getSupportActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ActionBar.Tab itemsTab = actionBar.newTab().setText(R.string.label_tab_items);
    ActionBar.Tab usersTab = actionBar.newTab().setText(R.string.label_tab_users);

    actionBar.addTab(itemsTab);
    actionBar.addTab(usersTab);
}

何か案は?

4

1 に答える 1

5

これを行うためのリフレクション「ハック」があります。このStackOverflowの質問で見つけたソリューションは、カスタムビューでActionBarタブを複製することを信用していません。

//pre-ICS
if (actionBarSherlock instanceof ActionBarImpl) {
    enableEmbeddedTabs(actionBarSherlock);

//ICS and forward
} else if (actionBarSherlock instanceof ActionBarWrapper) {
    try {
        Field actionBarField = actionBarSherlock.getClass().getDeclaredField("mActionBar");
        actionBarField.setAccessible(true);
        enableEmbeddedTabs(actionBarField.get(actionBarSherlock));
    } catch (Exception e) {
        Log.e(TAG, "Error enabling embedded tabs", e);
    }
} 

//helper method
private void enableEmbeddedTabs(Object actionBar) {
    try {
        Method setHasEmbeddedTabsMethod = actionBar.getClass().getDeclaredMethod("setHasEmbeddedTabs", boolean.class);
        setHasEmbeddedTabsMethod.setAccessible(true);
        setHasEmbeddedTabsMethod.invoke(actionBar, true);
    } catch (Exception e) {
        Log.e(TAG, "Error marking actionbar embedded", e);
    }
}

このブログ投稿も参照してください:http ://sparetimedev.blogspot.co.uk/2012/11/forcing-embedded-tabs-in-actionbar.html

于 2012-11-04T13:36:05.787 に答える