1

ActionBar タブ ナビゲーションを使用しています (アクション バー sherlock を使用)。

タブ バー (スタック、埋め込み、またはドロップダウン リスト) の現在の状態を検出する方法は??

4

1 に答える 1

1

この目的のための公開 API 呼び出しはありません。


警告: 次のアプローチは将来的に機能しなくなる可能性があります

ただし、いくつかのリフレクション トリックがあります。

public boolean hasEmbeddedTabs(ActionBar actionBar){
    Boolean embedded = false;
    try {
        Class c = Class.forName("com.android.internal.app.ActionBarImpl");
        Field f = c.getDeclaredField("mHasEmbeddedTabs");
        f.setAccessible(true);
        embedded = f.getBoolean(actionBar);
        f.setAccessible(false);
    }catch (Exception e) {
        Log.e("MyApp","Not a fair play",e);
    }
    return embedded;
}

そして、折りたたまれた状態を知るために:

public boolean areTabsCollapsed(ActionBar actionBar){
    Boolean collapsed = false;
    try {

        Class c = Class.forName("com.android.internal.app.ActionBarImpl");

        Class c2 = Class.forName("com.android.internal.widget.ScrollingTabContainerView");
        Method m = c2.getDeclaredMethod("isCollapsed");

        Field f2 = c.getDeclaredField("mTabScrollView");
        f2.setAccessible(true);
        Object scrollView = f2.get(actionBar);
        if(scrollView != null){
            collapsed = (Boolean) m.invoke(scrollView);
        }
        f2.setAccessible(false);


    }catch (Exception e) {
        e.printStackTrace();
    }
    return collapsed;
}
于 2013-07-14T12:39:47.430 に答える