`
isiqi
  • 浏览: 16490711 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

自定义Tab效果

阅读更多

前两天逛论坛的时候就把这篇文章保存下来了,原文来自:http://www.youmi.net/bbs/viewthread.php?tid=102&extra=page%3D1&ordertype=1,我只是希望把好的东西保存,相互学习,希望原作者不要介意,下面是介绍相关代码及技术:

device11.png device22.png

device33.png



示例代码:可能有些部分需要读者自己补充
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.*;
import android.widget.TabHost.OnTabChangeListener;
import android.os.Build;
import android.view.View;
import java.lang.reflect.Field;
import android.view.LayoutInflater;

public class testTabActivity extends TabActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

int width =45;
int height =48;

final TabHost tabs = getTabHost();
final TabWidget tabWidget = tabs.getTabWidget();

Field mBottomLeftStrip;
Field mBottomRightStrip;

LayoutInflater.from(this).inflate(R.layout.tab_views, tabs.getTabContentView(), true);

tabs.addTab(tabs.newTabSpec("first tab")
.setIndicator("信息",getResources().getDrawable(R.drawable.m))
.setContent(new Intent(testTabActivity.this,OneActivty.class))
);

tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("收藏",getResources().getDrawable(R.drawable.n))
.setContent(R.id.content));

tabs.addTab(tabs.newTabSpec("second tab")
.setIndicator("设置",getResources().getDrawable(R.drawable.s))
.setContent(R.id.content));


for (int i =0; i < tabWidget.getChildCount(); i++) {
/**
* 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果
*/
tabWidget.getChildAt(i).getLayoutParams().height = height;
tabWidget.getChildAt(i).getLayoutParams().width = width;


/**
* 设置tab中标题文字的颜色,不然默认为黑色
*/
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);

tv.setTextColor(this.getResources().getColorStateList(android.R.color.white));




/**
* 此方法是为了去掉系统默认的色白的底角
*
* 在 TabWidget中mBottomLeftStrip、mBottomRightStrip
* 都是私有变量,但是我们可以通过反射来获取
*
* 由于还不知道Android 2.2的接口是怎么样的,现在先加个判断好一些
*/
if (Float.valueOf(Build.VERSION.RELEASE) <= 2.1) {
try {
mBottomLeftStrip = tabWidget.getClass().getDeclaredField ("mBottomLeftStrip");
mBottomRightStrip = tabWidget.getClass().getDeclaredField ("mBottomRightStrip");
if(!mBottomLeftStrip.isAccessible()) {
mBottomLeftStrip.setAccessible(true);
}
if(!mBottomRightStrip.isAccessible()){
mBottomRightStrip.setAccessible(true);
}
mBottomLeftStrip.set(tabWidget, getResources().getDrawable (R.drawable.no));
mBottomRightStrip.set(tabWidget, getResources().getDrawable (R.drawable.no));

} catch (Exception e) {
e.printStackTrace();
}
} else {
/**
* 不做任何处理
*/
}
View vvv = tabWidget.getChildAt(i);
if(tabs.getCurrentTab()==i){
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_button));
}
else {
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
}

}
/**
* 当点击tab选项卡的时候,更改当前的背景
*/
tabs.setOnTabChangedListener(new OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
for (int i =0; i < tabWidget.getChildCount(); i++) {
View vvv = tabWidget.getChildAt(i);
if(tabs.getCurrentTab()==i){
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_button));
}
else {
vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.bar));
}
}
}});

}


}

分享到:
评论

相关推荐

    tablayout的自定义tab和自定义指示器

    ### 一、自定义Tab #### 1. 使用`TabLayout.Tab`接口 首先,可以通过`TabLayout`的`newTab()`方法创建新的`Tab`对象,然后通过`setCustomView()`方法设置自定义视图。你可以创建一个`LinearLayout`或`...

    Tab的创建,实现自定义Tab

    本篇文章将深入探讨如何创建自定义Tab,并利用提供的源代码文件实现这一功能。 首先,我们要理解Tab控件的基本概念。在GUI(图形用户界面)中,Tab控件通常由一系列标签页组成,每个标签页都代表一个独立的内容区域...

    TabLayout+ViewPager,自定义tab 实现仿淘宝TabLayout价格动态变换。

    本教程将深入讲解如何利用TabLayout+ViewPager实现自定义tab,以及如何模仿淘宝TabLayout的价格动态变换效果。 首先,我们要了解TabLayout和ViewPager的基本用法。TabLayout是Android Support Library中的一个组件...

    ionic 自定义tab切换

    综上所述,通过理解 Ionic 的 Tab 控件工作原理,结合 Angular 指令和 CSS 样式,我们可以轻松实现自定义 Tab 切换效果,提升应用的用户体验。在实际项目中,一定要根据具体需求进行调整,确保设计与功能的完美结合...

    自定义的带tab的可左右滑动的viewpager

    然而,为了满足特定需求,我们可能需要自定义Tab的设计,例如改变文字颜色、大小、形状等。这可以通过创建自定义的View或使用自定义的布局XML文件来完成。 2. **ViewPager的扩展**: - 要实现带滑动功能的...

    Swift 自定义 Tab bar.zip

    7. **自定义Tab Bar选中动画**:为了实现更丰富的用户体验,可以监听`UITabBar`的` didSelectItem`代理方法,然后在此方法中添加自定义动画,如过渡效果或视图切换动画。 8. **自定义Tab Bar的中间按钮**:如果想在...

    C#自定义tab控件

    标题中的"C#自定义tab控件"指的是开发者为了达到某种特殊效果或功能,通过C#编程语言对默认的TabControl进行扩展或改造。这通常涉及到以下几个方面: 1. **透明背景**:默认的TabControl有一个固定的背景颜色,...

    TabHost切换动画及基本原理

    默认情况下,`TabHost`在切换`Tab`时没有动画效果,但可以通过自定义来实现。在`TabHostWithAnim`这个资源中,开发者可能已经实现了自定义的切换动画,比如淡入淡出、滑动等效果。通过修改`TabHost`的监听事件,当...

    JavaScript 实现自定义Tab

    实现自定义Tab的关键步骤如下: 1. **HTML 结构**:创建基本的HTML布局,包括Tab按钮和内容面板。每个Tab按钮应该有一个唯一的标识,例如`data-tab`属性,内容面板可以通过类名或者ID关联到对应的Tab按钮。 ```...

    自定义tab栏控件,可与ViewPager联动

    本文将深入探讨如何实现这一功能,主要关注以下几个方面:自定义Tab布局、Tab与ViewPager的联动以及一些优化技巧。 首先,自定义Tab布局是实现个性化Tab栏的关键步骤。通常,我们可以继承`LinearLayout`或者`...

    自定义分类Tab菜单条

    7. **适配多种设备和屏幕尺寸**:确保你的自定义Tab菜单条能在不同分辨率和屏幕方向的设备上正常工作。这可能需要使用到`dimens.xml`文件来设置尺寸依赖,以及`dp`和`sp`单位。 8. **测试与优化**:在多种设备上...

    IOS源码——自定义Tab Bar的文字、颜色和图片加箭头.zip

    在iOS开发中,自定义Tab Bar是常见的需求,它能够帮助开发者实现更加个性化和独特的用户界面。本资源“IOS源码——自定义Tab Bar的文字、颜色和图片加箭头.zip”提供了一套实现这一功能的源代码。接下来,我们将详细...

    ios-自定义Tab控件.zip

    自定义Tab控件是提升应用界面个性化和用户体验的关键环节。本压缩包“ios-自定义Tab控件.zip”提供了一个名为“FLTabBarController”的开源项目,作者为fengling2300,可以从GitHub...

    自定义Tab样式

    总结来说,自定义Tab样式涉及到XML布局的设计、TabHost组件的使用、TabSpec的创建以及可能的自定义View和动画效果。通过这些方法,我们可以创建出符合设计需求的底部Tab布局,提供用户友好的交互体验。同时,结合...

    IOS源码——自定义Tab Bar的文字、颜色和图片加箭头.7z

    在iOS开发中,自定义Tab Bar是常见的需求,它允许开发者根据应用的UI设计和功能需求,对系统默认的Tab Bar进行个性化定制。这个"IOS源码——自定义Tab Bar的文字、颜色和图片加箭头.7z"压缩包提供了一个示例,展示了...

    IOS应用源码之自定义的tab bar 视图 .rar

    然而,系统默认的Tab Bar可能无法满足所有设计需求,因此开发者经常需要自定义Tab Bar视图来实现特定的交互效果或者视觉样式。这份名为“自定义的tab bar 视图”的压缩包文件提供了有关如何在iOS应用中创建自定义Tab...

    IOS应用源码之自定义Tab Bar的文字、颜色和图片加箭头.zip

    在iOS应用开发中,自定义Tab Bar是一项常见的需求,它允许开发者根据设计需求调整Tab Bar的样式,包括文字、颜色以及图标。标题"IOS应用源码之自定义Tab Bar的文字、颜色和图片加箭头.zip"揭示了这个压缩包包含了一...

    安卓底部自定义tab切换

    "安卓底部自定义tab切换"是一个针对这个需求的源码实现,旨在提供一种简单易用的方法,特别适合初学者理解和实践。下面将详细介绍这个主题的相关知识点。 1. **BottomNavigationView**:这是安卓官方支持库中提供的...

    swift-采用Swift编写自定义UISegmentedControl实现的滑块Tab效果

    本教程将深入探讨如何使用Swift语言创建一个具有滑块Tab效果的自定义`UISegmentedControl`。 首先,我们需要了解`UISegmentedControl`的基本用法。在Swift中,创建一个简单的`UISegmentedControl`可以通过以下代码...

    自定义Tab Bar的文字、颜色和图片加箭头ios源代码技术资料

    总之,这份“自定义Tab Bar的文字、颜色和图片加箭头ios源代码技术资料”将帮助开发者深入理解如何通过代码实现对Tab Bar的精细化控制,提升应用的视觉效果和交互体验。通过学习并实践这些知识点,开发者能够创建出...

Global site tag (gtag.js) - Google Analytics