`
Tony_Lee-S
  • 浏览: 82753 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

自定义Tab选项卡(转)

阅读更多
效果:



代码:

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));
      }
     }
    }});
         
     }
     
     
}
分享到:
评论

相关推荐

    android自定义Tab选项卡控件

    可通过自定义属性设置选项卡样式,且Tab的数目也可通过属性灵活设置,可设置为文本选项卡或图片选项卡,利用回调监听响应各Tab的点击事件,且设置方法和android原生控件设置点击监听的方法基本一致。

    4种不同风格jQuery自定义tab选项卡特效.zip

    导航菜单可应用于头部和侧边,Tab选项卡提供多套风格,支持响应式,支持删除选项卡等功能。面包屑结构简单,支持自定义分隔符。这是tab选项卡切换的源代码,由于内容较多,所以只截取了大致的结构。其实第二个盒子...

    Android自定义Tab选项卡4行代码完成调用(Fragment+ViewPager组合)

    Android自定义Tab选项卡4行代码完成调用(Fragment+ViewPager组合) 此Demo博客地址:http://blog.csdn.net/u012814441/article/details/49720899

    Android编程实现自定义Tab选项卡功能示例

    在Android开发中,自定义Tab选项卡是一种常见的用户界面设计,用于展示多个并行的视图或功能。本文将深入探讨如何在Android编程中实现自定义Tab选项卡,并通过一个完整的实例来阐述其核心概念和操作技巧。 首先,...

    Android-EasyTabs让您可以轻松实现自定义选项卡控件

    `EasyTabs`库就是为了帮助开发者快速、简便地创建自定义选项卡控件而诞生的。它允许开发者以最少的代码量实现丰富的选项卡效果,提升应用的用户体验。本文将深入探讨`EasyTabs`的使用方法、特点以及如何将其集成到您...

    13个css tab选项卡

    在网页设计中,CSS Tab选项卡是一种常见的交互元素,它允许用户通过点击不同的标签来查看或切换不同的内容区域。这种设计模式在很多网站上都能看到,例如设置面板、产品介绍等场景。本教程将深入探讨如何创建13种...

    Android Tablayout 自定义Tab布局的使用案例

    Android Tablayout 自定义Tab布局的使用案例 Android Tablayout 是 Android 设计库中的一部分,主要用于实现标签页功能。Tablayout 中的 Tab 可以自定义布局,以满足不同的需求。本文将 introduction 了 Android ...

    Fragment 自定义顶部选项卡

    为了自定义选项卡的外观,可以使用`TabLayout.Tab`对象的`setIcon()`和`setText()`方法设置图标和文本。如果你想要更复杂的效果,比如背景色、字体样式等,可以实现`TabLayout.OnTabSelectedListener`接口,重写`...

    不规则TAB选项卡JS代码

    不规则TAB选项卡的设计可能包括非传统形状、自定义动画效果或者不遵循标准布局的TAB样式。这种设计通常是为了提高用户体验,使其更加个性化和引人入胜。以下是一些关于实现不规则TAB选项卡JS代码的关键知识点: 1. ...

    layui Tab选项卡切换跟随特效(源码)

    首先,layui的Tab选项卡是一个常见的页面布局元素,用于将大量内容组织成清晰、简洁的模块,用户可以通过点击不同的选项卡来切换显示的内容。这种功能在展示多层级信息或者避免页面过于拥挤时特别有用。在layui中,...

    Android Tab 选项卡

    在Android开发中,Tab选项卡是一种常见的用户界面设计,它允许用户通过切换不同的Tab来查看或操作不同的内容区域。在本资源"Android Tab 选项卡"中,开发者提供了一个使用`Fragment`实现的Tab切换示例,这对于我们...

    非常好的一个tab选项卡

    开发者可以通过查看和学习这些文件,理解并自定义自己的tab选项卡功能。 在实际的开发过程中,实现tab选项卡的方式多种多样,常见的JavaScript库如jQuery、Bootstrap、AngularJS等都提供了方便的API来创建tab组件。...

    漂亮的JSP TAB选项卡

    "漂亮的JSP TAB选项卡"是一个专为提高用户体验而设计的组件,它在网页上以选项卡的形式组织内容,用户可以通过点击不同的选项卡来切换查看不同的页面部分。这种设计方式极大地优化了网页的布局,减少了页面滚动的...

    jquery bootstrap自定义添加删除选项卡代码

    在本文中,我们将深入探讨如何使用jQuery和Bootstrap框架来实现自定义的添加和删除选项卡功能。Bootstrap是一款流行的前端开发工具,它提供了丰富的组件和样式,使得构建响应式和交互式的用户界面变得简单。而jQuery...

    jquery tab选项卡插件 轻量级tab选项卡插件支持鼠标滑过、点击、自动切换、数据回调等功能

    总结来说,这个jQuery Tab插件提供了一套全面的选项卡解决方案,具备丰富的交互功能和高度的自定义能力,对于创建现代、互动性强的网页界面非常有帮助。无论是个人开发者还是专业团队,都能从中受益,提升项目的质量...

    安卓FragmentTab选项卡相关-Android选项卡效果-MaterialTabs.rar

    在Android应用开发中,FragmentTab选项卡是一种常见的用户界面元素,用于展示多个相互关联的内容区域。MaterialTabs库是实现这种效果的一种方式,它为开发者提供了谷歌Material Design风格的选项卡。下面将详细介绍...

    tab选项卡切换效果,tab选项卡内容宽度自适应

    在网页设计中,"tab选项卡切换效果"是一种常见的用户界面设计模式,它允许用户在有限的空间内查看和切换不同的内容区域。这种效果通常用于显示大量相关但互斥的信息,如产品详情、用户评论或者设置选项。在这个项目...

    TAB选项卡示例介绍

    ### TAB选项卡示例介绍深度解析 在网页设计与开发领域,TAB选项卡是一种常见的交互元素,用于在有限的空间内展示更多的信息或功能模块。它不仅提升了用户体验,还优化了界面布局,使得页面更加整洁有序。本文将深入...

    多种不同风格jQuery自定义tab选项卡特效.zip

    js代码 [removed][removed] [removed][removed] [removed] $('.tabsholder1').cardTabs();... $('.tabsholder2').cardTabs({theme: 'inset'});... $('.tabsholder3').cardTabs({theme: 'graygreen'});...

    android Tab选项卡

    在Android开发中,"android Tab选项卡"是一个常见的用户界面元素,用于展示多个视图或功能区域,并且允许用户在这些区域之间轻松切换。通常,Tab选项卡的设计目的是提高用户体验,使得用户能快速访问和浏览应用程序...

Global site tag (gtag.js) - Google Analytics