如何在Android中获取Fragment Tab Host的Tabs高度

时间:2014-05-11 18:23:04

标签: android android-fragments fragment-tab-host

你好我想在android中动态获取Frag of Fragment Tab的高度,但它对我没用。

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 个答案:

答案 0 :(得分:0)

获得高度很棘手,因为视图没有像您预期的那样立即布局。要在布置视图后立即获得高度,请添加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);

如果您询问小标签标签的高度,this StackOverflow question可能会有帮助。