package com.ceict.test;
import android.app.TabActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TabHost;
import android.widget.TabWidget;
public class MainActivity extends TabActivity {
TabHost tabhost;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tabhost = getTabHost();
// 7个标签
tabhost.addTab(tabhost.newTabSpec(0 + "").setIndicator("测试")
.setContent(R.id.textview01));
tabhost.addTab(tabhost.newTabSpec(1 + "").setIndicator("标题")
.setContent(R.id.textview01));
tabhost.addTab(tabhost.newTabSpec(2 + "").setIndicator("办公")
.setContent(R.id.textview01));
tabhost.addTab(tabhost.newTabSpec(3 + "").setIndicator("通讯")
.setContent(R.id.textview01));
tabhost.addTab(tabhost.newTabSpec(4 + "").setIndicator("邮件")
.setContent(R.id.textview01));
tabhost.addTab(tabhost.newTabSpec(5 + "").setIndicator("私信")
.setContent(R.id.textview01));
tabhost.addTab(tabhost.newTabSpec(6 + "").setIndicator("通知")
.setContent(R.id.textview01));
TabWidget tabWidget = tabhost.getTabWidget();
// 标签的个数
int count = tabWidget.getChildCount();
// 获取手机屏幕的宽高
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels;
int screenheight = displayMetrics.heightPixels;
// 我的手机是:320*480
System.out.println(screenWidth + "*" + screenheight);
if (count >= 4) {
for (int i = 0; i < count; i++) {
// 设置每个标签的宽度,为屏幕的1/4
tabWidget.getChildTabViewAt(i).setMinimumWidth(
(screenWidth) / 4);
}
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<!-- 水平滚动 -->
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/next_button"
android:layout_toRightOf="@+id/up_button"
android:fillViewport="true"
android:scrollbars="none" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</HorizontalScrollView>
</RelativeLayout>
<!-- 帧布局 -->
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textview01"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textview02"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textview03"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textview04"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textview05"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
</TabHost>
- 大小: 10.1 KB
分享到:
相关推荐
- 当TabWidget中的标签数量过多时,可能需要考虑滚动功能,可以通过第三方库如`androidx.viewpager.widget.ViewPager`实现。 - 为了提高用户体验,应确保每个标签页的内容加载策略合理,避免用户切换标签时造成明显...
然而,"可以左右滚动的TabHost"是一种特殊的实现,它扩展了`TabHost`的功能,允许用户通过左右滑动来浏览和切换更多的标签。 这个特性对于那些拥有大量分类或者选项的应用尤其有用,比如电影分类、新闻类别或者电商...
例如,如果选项卡数量较多,可能需要添加滚动条,这可以通过自定义QTabBar的子类并重写其`eventFilter()`方法来实现。 最后,对于提供的文件列表中的`\no.txt`和`\TabWidget.zip`,前者可能是用来记录一些注释或者...
其次,Gallery是一个水平滚动的视图,用户可以左右滑动来浏览其中的内容。在实现标签效果图时,我们将Gallery用作TabHost中的TabWidget,使每个Tab成为一个可滑动的元素。在源码中, Gallery的onTouchEvent()方法会...
在Android应用开发中,TabHost是一个非常重要的组件,它用于创建具有多个标签页的应用界面,用户可以通过点击或滑动在各个标签页之间切换。在"Android应用源码可以横向拖动的TabHost"这个项目中,我们可以深入学习...
TabWidget用于展示各个标签,而FrameLayout则用于加载每个标签对应的内容。当用户点击不同的Tab时,FrameLayout会切换显示相应的内容。 要创建一个TabHost应用,首先需要在XML布局文件中定义TabHost,并在其中设置...
例如,可以设置TabLayout为滚动模式,当标签过多时自动滚动显示。同时,通过使用`TabLayout.Tab`对象,可以自定义每个标签的文本、图标甚至定制视图。 8. **自定义TabView**:如果默认的TabView样式不能满足需求,...
19. TabHost和TabWidget:用于创建一个标签页的界面,用户可以通过切换不同的标签页查看不同的视图。 20. PopupWindow:用于显示浮动窗口,可以包含任何视图。 21. ZoomControls:用于视频播放时的缩放控制。 22....
7. **样式和主题**:可以根据需要自定义`ScrollableTabHost`的外观,包括标签的字体、颜色、背景等。可以通过修改主题或者在代码中直接设置样式属性来实现。 8. **兼容性和版本适配**:由于`ScrollableTabHost`通常...
`Gallery`是Android提供的一个可以水平滚动视图的控件,而`TabHost`则是用于构建多标签页面布局的容器。下面我们将详细讨论这两个组件以及如何将它们结合在一起创建一个动态的标签效果图。 首先,`Gallery`控件允许...
在Android开发中,`ScrollableTabHost`是一个自定义的组件,它扩展了标准的`TabHost`,增加了滚动功能,使得在应用中可以展示更多的标签页而不至于因为数量过多而导致界面混乱。`ScrollableTabHost`是为了解决原生`...
首先,`TabHost`是Android中处理多标签页的主要组件,它可以包含一个或多个`TabWidget`(用于显示标签)和一个`FrameLayout`(用于展示每个标签下的内容)。开发者需要在`TabHost`中设置各个标签,并为每个标签指定...
4. **样式定制**:可以通过自定义主题或直接修改View来改变Tab的样式。 综上所述,Android的TabHost和ScrollableTabHost是构建多标签应用的重要工具,通过合理的使用和扩展,可以实现丰富的用户交互。在实际开发中...
在本例中,Gallery被用来模拟TabHost中的标签滑动效果,用户可以左右滑动来选择不同的标签。 在实现过程中,我们通常会做以下步骤: 1. 创建TabHost实例,并设置其布局。这包括添加TabWidget和FrameLayout,以及将...
4. **设置Tab的外观**:可以自定义Tab的图标、文字颜色、背景等,通常通过TabWidget的属性来调整。 5. **适配器与ListView**:ListView的数据来源通常是Adapter,比如ArrayAdapter或BaseAdapter的子类。适配器负责...
它可以包含一个或多个TabWidget(标签栏)和一个FrameLayout(内容区域)。开发者可以通过TabSpec对象来定义每个标签,并关联到对应的Intent,这将决定点击标签时加载哪个Activity或Fragment。TabHost 提供了方便的...
TabWidget是Android SDK中的一个控件,它允许在界面上创建一个可滚动的标签页。以下是如何使用TabWidget实现底部菜单栏的步骤: 1. **添加TabHost和TabWidget**:在布局XML文件中,我们需要一个TabHost来承载...
在Android开发中,`ScrollableTabHost`是一个自定义组件,它扩展了标准的`TabHost`类,增加了滚动功能,使得在多个标签页之间切换时可以方便地浏览和选择。`TabHost`是Android系统提供的一种用于创建具有可滑动标签...
在给定的资源“Android源码——ScrollableTabHost tab控件_new_14.zip”中,我们可以看到是关于可滚动的`TabHost`,即`ScrollableTabHost`的实现,这通常用于处理大量标签页的情况,因为默认的`TabHost`可能无法在...