如何减少标签栏高度并在底部显示

时间:2010-09-10 09:02:52

标签: android

任何人都可以告诉如何降低标签栏的高度并在底部显示标签栏

由于

8 个答案:

答案 0 :(得分:26)

使用以下代码行来更改高度,这是我onCreate方法的最后一行

tabHost.getTabWidget().getChildAt(0).getLayoutParams().height =35;

答案 1 :(得分:9)

将以下方法添加到扩展TabActivity

的类中
 public void addNewTab(Context context, String title, int height){
     TabHost tabHost = getTabHost();  // The activity TabHost
     Intent intent = new Intent().setClass(context, HelloTabsActivity.class);
     TabHost.TabSpec spec = tabHost.newTabSpec(title.toLowerCase()).setIndicator(title).setContent(intent);
     tabHost.addTab(spec);
     int totalTabs = tabHost.getTabWidget().getChildCount();
     ((RelativeLayout)tabHost.getTabWidget().getChildTabViewAt(totalTabs-1)).removeViewAt(0);
     ((TextView)((RelativeLayout)tabHost.getTabWidget().getChildTabViewAt(totalTabs-1)).getChildAt(0)).setHeight(30);
     tabHost.getTabWidget().getChildAt(totalTabs-1).getLayoutParams().height = height;
 }

然后将其称为addNewTab(这个,“标题标题”,30);

答案 2 :(得分:8)

请注意,您必须更改每个标签的高度。对于两个标签:

@Override
public void onCreate(Bundle savedInstanceState) {
    ... // other code
    final int height = 45;
    mTabHost.getTabWidget().getChildAt(0).getLayoutParams().height = height;
    mTabHost.getTabWidget().getChildAt(1).getLayoutParams().height = height;
}

答案 3 :(得分:5)

你可以

  • 使用屏幕底部的TableLayout构建您自己的标签页 - 这为您提供了很大的灵活性

  • 修改使用现有的TabHost / TabWidget - 原则上有效,但我不知道如何减少标签栏的高度。像那样工作:

布局文件main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TabHost android:id="@+id/tab_host"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TabWidget android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:id="@android:id/tabs"
            android:layout_gravity="bottom" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent" >
            <LinearLayout android:id="@+id/first_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
                <TextView android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:text="First Tab" />
                <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/second_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
                <TextView android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:text="Second Tab" />
                <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/third_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
                <TextView android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:text="One More Tab" />
                <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/edit_item_text_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
        </FrameLayout>
    </TabHost>
</LinearLayout>

您的活动的源代码,在本例中为StartActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class StartActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost tab_host = (TabHost) findViewById(R.id.tab_host);
        tab_host.setup();

        TabSpec tabspec1 = tab_host.newTabSpec("TAB_1");
        tabspec1.setIndicator("Tab 1");
        tabspec1.setContent(R.id.first_tab);
        tab_host.addTab(tabspec1);

        TabSpec tabspec2 = tab_host.newTabSpec("TAB_2");
        tabspec2.setIndicator("Tab 2");
        tabspec2.setContent(R.id.second_tab);
        tab_host.addTab(tabspec2);

        TabSpec tabspec3 = tab_host.newTabSpec("TAB_3");
        tabspec3.setIndicator("Tab 3");
        tabspec3.setContent(R.id.third_tab);
        tab_host.addTab(tabspec3);

        tab_host.setCurrentTab(0);
    }
}

原来看起来像:

alt text

答案 4 :(得分:2)

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:padding="1dp">

    <RelativeLayout android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TabWidget android:id="@android:id/tabs"
            android:layout_width="fill_parent" android:layout_height="60dp"
            android:layout_alignParentBottom="true" />

        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent"
            android:padding="1dp">
        </FrameLayout>
    </RelativeLayout>

答案 5 :(得分:1)

您很可能必须自己实施标签。据我所知,使用常规的android选项卡是不可能的。

答案 6 :(得分:0)

<TabWidget android:id="@android:id/tabs" android:tabStripEnabled="false" android:padding="0dip" android:layout_width="wrap_content" android:layout_height="fill_parent"/>

答案 7 :(得分:0)

在Eclipse“图形布局”模式下使用选项卡不是很直观。

注意 - 目前我无法将照片附加到此答案,因为我的声誉        10.可能在将来我会编辑并添加它们。

1)更改标签栏高度: - 在“大纲”视图中选择“标签(TabWidget)”。选项卡/调整大小框应显示在选项卡栏周围,现在可以修改其高度。我在picture1中做得更薄了。

2)将标签栏移动到底部: - 在“大纲”视图中选择“标签(TabWidget)”并将其放入其上方的LinearLayout(如图1中所示)。这会将“标签(TabWidget)”发送到列表的底部(参见图2)。标签栏可能会在此阶段消失。因此调整“tabcontent”&amp;的权重。 “标签(TabWidget)”直到看起来不错。我用了10&amp;分别为1。

3)将tab2置于顶部: - 完成tab1的设计/布局后,我们想要处理下一个选项卡。但Eclipse不允许选择它。将tab2置于顶部选择tab1并将其放入tabcontent。这会将tab1发送到列表的底部,tab2发送到顶部。 稍后当tab2上的工作完成时,可以启动tab3。

这种在图形布局模式下工作的迂回方式,但可能比输入xml代码更好。

干杯