`

android自定义tabhost样式

阅读更多
public class CustomTabhost 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.loading, tabs.getTabContentView(), true);
    
        tabs.addTab(tabs.newTabSpec("first tab")
             .setIndicator("信息")
             .setContent(new Intent(CustomTabhost.this,Load.class))
             );
       
        tabs.addTab(tabs.newTabSpec("second tab")
         .setIndicator("收藏")
         .setContent(new Intent(CustomTabhost.this,Load.class)));
       
        tabs.addTab(tabs.newTabSpec("second tab")
             .setIndicator("设置")
             .setContent(new Intent(CustomTabhost.this,Load.class)));

        tabs.setCurrentTab(1);  






        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.substring(0, 3)) <= 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.navbgfocus));
  }
  else {
          vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.menubg));
  }
       
        }
        /**
         * 当点击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.menufocus));
     }
     else {
             vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.menubg));
     }
    }
   }});
      
    }

}
  • 大小: 11.6 KB
分享到:
评论

相关推荐

    android自定义tabhost

    本文将深入探讨如何自定义TabHost来实现类似新浪微博的效果,从而提升用户体验和应用的交互性。 首先,我们需要理解TabHost的基本用法。TabHost是一个容器,它可以包含一个TabWidget(用于显示标签)和一个...

    android自定义TabHost

    在传统的TabHost使用中,我们通常只能使用系统预设的样式和颜色,但为了使应用更加个性化,开发者经常需要自定义TabHost的外观,例如更改背景颜色。本篇将详细讲解如何在Android中自定义TabHost,实现更换背景颜色。...

    android--自定义TabHost

    然而,系统默认的TabHost功能有限,样式和交互方式可能无法满足所有项目的需求,因此自定义TabHost就显得尤为重要。下面我们将详细探讨如何自定义Android的TabHost,并通过具体的实现案例进行讲解。 首先,理解...

    android TabHost自定义选项卡

    本文将深入探讨如何在Android中自定义TabHost,以简化开发过程并提高效率。 首先,我们要理解TabHost的基本结构。一个TabHost通常包含两个主要部分:TabWidget和FrameLayout。TabWidget是显示选项卡的部分,而...

    android使用了自定义button自定义tabHost切换页面Demo

    在“自定义tabhost使用了不同默认的上标签切换页面”这一描述中,我们可以理解为每个Tab可能展示不同的内容,而这些内容可能是通过不同的Activity或Fragment来实现的。当用户点击不同的Tab时,TabHost会根据预设的...

    自定义Android的TabHost控件样式

    自定义TabHost的样式能够帮助开发者实现更个性化、更具吸引力的用户界面。本文将深入探讨如何自定义Android的TabHost控件样式。 首先,我们从基础开始。TabHost是Android提供的一个布局容器,它包含一个TabWidget...

    android的自定义TabHost

    本篇文章将深入探讨如何在Android中自定义TabHost,以实现美观且功能丰富的界面。 首先,让我们理解TabHost的基本结构。TabHost通常包含两个主要部分:TabWidget和FrameLayout。TabWidget是显示标签的部分,而...

    【Android】底部、自定义Tabhost的应用

    默认的TabHost样式可能不符合所有开发者的设计需求,因此自定义TabHost就显得尤为关键。这篇教程将深入探讨如何在Android中实现自定义TabHost的样式,并提供一个可以直接运行的示例。 首先,我们要理解TabHost的...

    自定义TabHost实现

    在这个项目中,你可能会找到更多关于如何自定义`TabHost`的代码和资源文件,比如`custom_tab_indicator.xml`布局文件,用于定义自定义标签指示器的样式。 总的来说,自定义`TabHost`的关键在于理解`TabSpec`的用法...

    自定义TabHost例子,类似于微博下面的Tab选项卡

    然而,Android原生的TabHost样式可能无法满足所有设计需求,因此开发者经常需要对其进行自定义以达到理想的视觉效果。在这个“自定义TabHost例子”中,我们将深入探讨如何创建一个类似微博底部Tab选项卡的UI组件。 ...

    自定义TabHost经典案例

    总之,自定义TabHost是Android开发中的一个高级技巧,它允许开发者打破常规,创造出更具个性化的选项卡界面。通过调整布局、样式、内容以及交互方式,我们可以为用户提供更加丰富和动态的应用体验。在这个经典案例中...

    TabHost自定义样式 自定义TabWidget

    总的来说,自定义TabHost样式是提升Android应用用户体验的重要手段。通过学习和实践,开发者可以创建出符合自己应用风格的选项卡界面,使应用更具吸引力。在实际编码过程中,务必保持代码的整洁和可读性,充分利用...

    自定义tabhost

    自定义TabHost可以帮助我们根据项目需求调整其样式、位置以及交互方式,从而提供更好的用户体验。本篇文章将详细讲解如何自定义TabHost,并通过一个简单的例子来演示这一过程。 首先,让我们了解TabHost的基本结构...

    自定义tabhost实现activity 的跳转

    本篇文章将详细介绍如何通过自定义TabHost来实现Activity之间的跳转,以及如何设计一个简洁但功能完备的界面。 首先,理解TabHost的基本结构至关重要。TabHost是一个容器,它包含一个TabWidget(标签栏)和一个...

    自定义tabhost(动态添加选项+带自动水平滑动选项卡+手势切换选项卡及内容功能)

    总之,自定义TabHost是Android开发中的一个重要技巧,它可以帮助我们构建出更加丰富和交互性强的用户界面。通过动态添加选项、实现自动水平滑动以及手势切换,我们可以创造出更具吸引力的移动应用。

    Android studio TabHost布局

    本文将详细讲解如何在Android Studio中使用TabHost进行布局设计,以及如何自定义TabHost的各项属性,如字体颜色、大小等。 一、TabHost的基本概念 TabHost是Android SDK提供的一种布局容器,可以容纳一个或多个...

    自定义Tabhost,ViewPager的滑动

    自定义TabHost 传统的`TabHost`默认会显示为带有文本的按钮,但有时我们需要更个性化的展示方式。自定义`TabHost`主要包括以下几个步骤: - **创建自定义TabIndicator**: 可以通过继承`LinearLayout`或其他视图来...

    Android Tabhost 实例demo

    本实例演示了如何在Android应用程序中自定义TabHost,以实现多标签功能。 首先,让我们了解TabHost的基本概念。TabHost是一个容器,它包含一个TabWidget(用于显示标签)和一个FrameLayout(用于显示与标签关联的...

    Tabhost自定义背景样式

    最后,为了使应用更加美观,我们可能还需要在主题(Theme)中设定全局的TabHost样式,包括未选中和选中状态的背景颜色、文字颜色等。这可以在res/values/styles.xml中完成: ```xml &lt;!-- 其他样式 --&gt; ...

Global site tag (gtag.js) - Google Analytics