任何人都可以告诉如何降低标签栏的高度并在底部显示标签栏
由于
答案 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);
}
}
原来看起来像:
答案 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代码更好。
干杯