Как получить вкладки Высота фрагмента 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 ответ

Получить высоту сложно, потому что вид не выложен так быстро, как можно было бы ожидать. Чтобы получить высоту, как только вид выложен, вы добавляете ViewTreeObserverOnGlobalLayoutListener,

Вот мое решение для получения высоты содержимого на вкладке. Этот код находится в 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 может помочь.

Другие вопросы по тегам