Android:更漂亮的TabLayout?

时间:2011-05-25 14:34:33

标签: android

我只想在TabLayout的标签中使用文字。不幸的是,默认情况下,选项卡非常大,文本非常小。我看不到使用TabSpec.setIndicator(View)调整文本大小或标签高度的方法;这将是非常不受欢迎的,因为那时我会定义一个特定的布局,选择器,选定的图像,未选择的图像等...所以我的选项卡将不适合每个设备的外观和感觉。有没有一种方便的方式来自定义Tab外观?

mTabHost.addTab(mTabHost.newTabSpec("system").setIndicator("My first tab").setContent(R.id.fileBrowserTabHostSystemList));
mTabHost.addTab(mTabHost.newTabSpec("recent").setIndicator("My Second tab").setContent(R.id.fileBrowserTabHostRecentList));

enter image description here

1 个答案:

答案 0 :(得分:2)

我设法以一种很好的方式改变标签高度:

    final int tabChildrenCount = tabWidget.getChildCount();
    View currentTab;
    for (int i = 0; i < tabChildrenCount; i++) {
        currentTab= tabWidget.getChildAt(i);
        currentTab.getLayoutParams().height = 32;
    }
    tabWidget.getLayoutParams().height = LayoutParams.WRAP_CONTENT;
    tabWidget.requestLayout(); 

Tabs with smaller height

我还尝试在标签中获取标题的高度,并将标签的高度设置为:

currentTab.findViewById(android.R.id.title).getHeight();
// also tried with getMeasuredHeight()

但它返回0,因为它在onCreate()方法中,并且视图似乎不知道它的大小。 LayoutParams.WRAP_CONTENT对选项卡高度没有好处,因为它的作用是FILL_PARENT。

但请注意,此解决方案仅假设选项卡的标题适合32像素。

最安全的猜测是手动进行布局(已经发布http://joshclemm.com/blog/?p=136)。从Android Repository获取资源并自定义:)