Как получить вкладки Высота фрагмента Tab Host в Android
Здравствуйте, я пытаюсь динамически получить высоту Tab of Fragment Tab Host в Android, но у меня это не сработало.
mTabHost = (FragmentTabHost) findViewById(R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.container);
mTabHost.addTab(
mTabHost.newTabSpec("tab1").setIndicator("Tab 1",
getResources().getDrawable(android.R.drawable.star_on)),
FragmentTab.class, null);
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)findViewById(R.id.container).getLayoutParams();
params.setMargins(0, mTabHost.getHeight(), 0, 0);
Любая идея, чтобы получить высоту вкладок FragmentTabHost?
1 ответ
Получить высоту сложно, потому что вид не выложен так быстро, как можно было бы ожидать. Чтобы получить высоту, как только вид выложен, вы добавляете ViewTreeObserver
OnGlobalLayoutListener
,
Вот мое решение для получения высоты содержимого на вкладке. Этот код находится в onCreateView
метод моего фрагмента.
ViewTreeObserver.OnGlobalLayoutListener listener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
View rootElement = tabView.findViewById(R.id.root_element_of_tab);
Log.d("The height of this tab is " + rootElement.getHeight());
// Now that the listener has served its purpose, we can remove it
tabView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
};
tabView.getViewTreeObserver().addOnGlobalLayoutListener(listener);
Если вы спрашиваете о высоте ярлыка маленькой вкладки, этот вопрос Stackru может помочь.