`
- 浏览:
622720 次
- 性别:
- 来自:
上海
-
在我的项目中 有5个tab 需要在选中某个TAB的时候 背景图片更换掉
我的Activity继承了
MyClass extends TabActivity implements TabHost.TabContentFactory
Tab主界面对应的layout文件就不用说了
网上有很多关于tabhost配置文件需要注意的 这里的话 我再啰嗦一下
<FrameLayout android:id="@android:id/tabcontent" 一定要这样设置
<TabWidget android:id="@android:id/tabs"一定要这样设置
由于系统自带的样式太丑了 我就自定义了一个tab样式
每个TAB样式都有TAB显示文字和背景图片 请下载本文附件参阅tab_spec.xml
现在说到正题了 如果在点击的过程中 选中项背景变色呢
1,首先应该默认给TAB一个背景色
2,在点击过程中 根据TAB发生变化 再重新赋一次背景就OK了
见如下代码
//获取要显示的TAB页图片名称
private int[] drawableArray = Constant.drawableArray ;
//当该TAB选中时,更换背景图片
private int[] drawableSelectedArray = Constant.drawableSelectedArray ;
// 添加一个Tab页
addTab(tabHost, str+num, str, drawableArray[num-1], intent);
//设置初始化加载页面默认被选中项
tabHost.setCurrentTab(0) ;
tabWidget.getChildAt(0).findViewById(R.id.img_ico).setBackgroundResource(drawableSelectedArray[0]) ;
private void addTab(TabHost tabHost, String Tag, String name, int drawableId, Intent intent) {
// 填充
View tabView = LayoutInflater.from(this).inflate(R.layout.tab_spec,
null);
//填充图片(这里是设置默认的背景图片)
ImageView image = (ImageView)tabView.findViewById(R.id.img_ico);
image.setBackgroundResource(drawableId) ;
//填充文本
TextView textView = (TextView) tabView.findViewById(R.id.txt_name);
textView.setText(name);
tabHost.addTab(tabHost.newTabSpec(Tag).setIndicator(tabView)
.setContent(intent));
}
/** 监听切换tab */
private TabHost.OnTabChangeListener tabChange = new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
View view = CrossedWorkMainActivity.this.getTabHost().getCurrentView();
int index = Integer.valueOf(tabId.substring(tabId.length()-1, tabId.length()))-1 ;//获取当前索引
tabIndex = index ;
//获得当前所有的TabWidget
TabWidget widget = CrossedWorkMainActivity.this.getTabHost().getTabWidget() ;
int num = widget.getChildCount() ;
for(int i=0;i<num;i++){
ImageView imageView = (ImageView)widget.getChildAt(i).findViewById(R.id.img_ico) ;
if(tabIndex==i){
//如果某个tab被选中,则更换背景图片
imageView.setBackgroundResource(drawableSelectedArray[i]) ;
}else{
//未选中的,则使用默认背景图
imageView.setBackgroundResource(drawableArray[i]) ;
}
}
}
};
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Android TabHost实现屏幕UI窗口的TAB切换功能,实现的过程:声明TabHost对象、取得TabHost对象,为TabHost添加标签,新建一个newTabSpec(newTabSpec),设置其标签和图标(setIndicator),设置内容(setContent),然后...
在Android应用开发中,TabHost是一个非常常用的组件,它用于创建具有多个标签(Tab)的界面,每个标签对应一个不同的Activity或Fragment。本教程将详细讲解如何自定义TabHost,使其背景图片能够随着选项卡的切换而...
在上面的代码中,`tab_host_background` 和 `tab_indicator` 是自定义的九宫格图片资源,用于控制TabHost的整体背景和标签指示器的样式。 通过以上步骤,我们就成功地实现了自定义的Tabhost背景样式,包括点击时...
在实际开发中,我们可能会遇到自定义Tab外观的需求,比如改变文字颜色、大小、添加背景等。这时,可以通过自定义布局文件和TabSpec的`setIndicator()`方法实现。同时,还可以使用`TabHost.OnTabChangeListener`监听...
每个RadioButton的文本可以设置为对应Tab的标题,同时,我们可以通过设置RadioButton的背景图片来实现视觉上的Tab效果。 下面是一个简单的步骤概述: 1. **布局设计**:在XML布局文件中,创建一个RadioGroup,并在...
为了实现选中状态的效果,我们可以通过监听TabHost的`onTabChanged()`回调来改变选中项的样式。例如,我们可以为选中的标签设置不同的背景颜色: ```java tabHost.setOnTabChangedListener(new TabHost....
在Android开发中,TabHost是一个非常重要的组件,它允许开发者在一个Activity中创建多个Tab来展示不同的内容。本篇文章将深入探讨如何自定义TabHost样式,让应用界面更加美观且符合用户体验。 首先,我们需要理解...
- **自定义样式**:可以通过自定义TabWidget的样式,来改变Tab的外观,例如字体、颜色、背景等。 3. **ListView与TabHost的结合** - **嵌套使用**:在一个Tab的内容区域中,我们可以放置一个ListView,展示与当前...
通过代码创建TabHost,你需要实例化TabHost,并设置其ID为"android:id/tabhost"。然后添加TabWidget和FrameLayout,接着用`TabHost.TabSpec`来定义每个标签,包括标签的文本、图标以及与之关联的活动或视图。最后,...
在Android应用开发中,TabHost是一个非常常见的组件,它用于创建多标签的...记得在实际项目中根据需求进行调整,如处理数据加载、实现动态添加Tab等。实践是检验真理的唯一标准,动手实践才能更好地掌握这个知识点。
总之,`TabHost`的美化是一个涉及多个方面的过程,包括但不限于自定义标签样式、字体和颜色设置、图标应用、背景颜色处理、滑动切换、动画效果、动态操作以及响应式设计等。通过巧妙地运用这些技巧,我们可以创建出...
设定一个定时任务,每隔一段时间更换一次`Tab`的背景图片,这样可以增加应用的动态感。 在`TabHostWithFlipper`这个项目中,开发者可能已经提供了一个简洁的实现示例。解压这个压缩包,你可以看到源代码是如何巧妙...
4. 使用TabHost的setup()方法设置TabHost,并通过addTab()方法添加Tab。 5. 实现ViewPager的PagerAdapter,通常使用FragmentPagerAdapter或FragmentStatePagerAdapter,根据需求选择。 6. 将ViewPager的Adapter设置...
- **添加到TabHost**: 使用`TabHost.addTab()`方法将自定义的Tab添加到`TabHost`中。 ### 2. ViewPager `ViewPager`是一个可以左右滑动浏览多个页面的组件,常用于实现Tab之间的切换。在使用`ViewPager`时,需要...
5. **设置Tab内容**:每个标签对应一个具体的活动或布局,当用户切换标签时,TabHost会根据TabSpec设置的内容来启动相应的活动或填充指定的布局。 6. **样式和动画**:为了使效果更美观,开发者可能还对Gallery和...
可以通过设置`TabSpec`的`Indicator`来自定义标签的显示样式,包括文字颜色、背景图片等。例如: ```java tab1.setIndicator("标签1", getDrawable(R.drawable.tab_indicator)); ``` 5. **使用Fragment替代...
默认的Tab样式可能不能满足所有需求,开发者可能会自定义Tab的样式,包括文字颜色、字体、背景图等,这通常需要修改TabIndicator的属性,或者创建自定义的TabIndicator布局。 7. **事件监听与处理**: 为了响应...
TabSpec是TabHost的配置对象,通过TabSpec可以设置Tab的标签文本、图标以及Intent。在源码中,开发者会创建多个TabSpec,并添加到TabHost中。 4. **Fragment的使用**:现代Android开发更倾向于使用Fragment来管理...
例如,可以改变Tab的背景色、字体样式、指示器形状等,使其更接近网易客户端的设计风格。 5. **Adapter的使用**:在某些情况下,TabHost的内容可能来源于ListView、GridView或其他可滚动视图。这时,就需要使用...