ActionBar タブ ナビゲーションを使用しています (アクション バー sherlock を使用)。
タブ バー (スタック、埋め込み、またはドロップダウン リスト) の現在の状態を検出する方法は??
ActionBar タブ ナビゲーションを使用しています (アクション バー sherlock を使用)。
タブ バー (スタック、埋め込み、またはドロップダウン リスト) の現在の状態を検出する方法は??
この目的のための公開 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;
}