`
rafale35
  • 浏览: 20587 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android自定义TAB选项卡

 
阅读更多

import android.app.TabActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.widget.TabWidget;
import android.widget.TextView;

/**
 * @Description:
 * @ChangeList:
 */
public class MyTabActivity extends TabActivity {

    private static final String TAG = "MyTabActivity";
    private static final int TAB_HEIGHT = 40;
    private TabHost tabHost;
    private TabWidget tabWidget;

    @Override
    protected void onStart() {
        Log.d(TAG, FileUtils.getMethodName());
        super.onStart();
    }

    @Override
    protected void onRestart() {
        Log.d(TAG, FileUtils.getMethodName());
        super.onRestart();
    }

    @Override
    protected void onStop() {
        Log.d(TAG, FileUtils.getMethodName());
        super.onStop();
    }

    @Override
    protected void onPause() {
        Log.d(TAG, FileUtils.getMethodName());
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        Log.d(TAG, FileUtils.getMethodName());
        super.onDestroy();
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, FileUtils.getMethodName());
        super.onCreate(savedInstanceState);
        setContentView(R.layout.index_tab);
        tabHost = this.getTabHost();
        tabHost.getTabWidget().setStripEnabled(false);

        TabSpec ts1 = tabHost.newTabSpec("1");
        ts1.setIndicator(getString(R.string.title_sdcard));
        ts1.setContent(new Intent(this, A.class));
        tabHost.addTab(ts1);

        TabSpec ts2 = tabHost.newTabSpec("2");
        ts2.setIndicator(getString(R.string.title_remote));
        ts2.setContent(new Intent(this, B.class));
        tabHost.addTab(ts2);

        tabWidget = (TabWidget) findViewById(android.R.id.tabs);

        for (int i = 0; i < tabWidget.getChildCount(); i++) {
            View view = tabWidget.getChildAt(i);
            view.setBackgroundDrawable(getResources().getDrawable(
                    R.drawable.grey));
            view.getLayoutParams().height = TAB_HEIGHT;

            TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(
                    android.R.id.title);
            tv.setTextColor(Color.WHITE);
            RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tv
                    .getLayoutParams();
            params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, 0);
            params.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
            tv.setLayoutParams(params);
        }

        tabHost.setOnTabChangedListener(new OnTabChangeListener() {
            @Override
            public void onTabChanged(String tabId) {
                for (int i = 0; i < tabWidget.getChildCount(); i++) {
                    View v = tabWidget.getChildAt(i);
                    if (tabHost.getCurrentTab() == i) {
                        v.setBackgroundDrawable(getResources().getDrawable(
                                R.drawable.tab_bg1));
                    } else {
                        v.setBackgroundDrawable(getResources().getDrawable(
                                R.drawable.tab_bg2));
                    }
                }
            }
        });
        tabHost.setCurrentTab(0);
        tabWidget.getChildAt(0).setBackgroundDrawable(
                getResources().getDrawable(R.drawable.tab_bg1));
    }
}

 

 

 

 

 

 

 

XML

 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TabWidget
                android:id="@android:id/tabs"
                android:background="@null"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" />
        </LinearLayout>
    </TabHost>
</LinearLayout>

 

 

 

以后补充...

分享到:
评论
1 楼 llty 2011-10-28  
有帮助 !  以后写博客 能上图 和 源码吗!? 

相关推荐

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

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

    android自定义Tab选项卡控件

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

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

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

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

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

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

    总结来说,Android自定义Tab选项卡功能涉及以下几个关键点: 1. 使用TabHost和TabWidget创建选项卡。 2. 通过TabSpec设置选项卡的标签、图标和内容。 3. 修改选项卡的外观,包括尺寸和颜色。 4. 可选地,使用反射...

    Android Tab 选项卡

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

    Android多个TAB选项卡切换效果

    在Android应用开发中,创建一个带有多个选项卡切换的效果是一个常见的需求,这通常涉及到用户界面(UI)的设计和用户体验(UX)的优化。本篇文章将详细介绍如何在Android中实现这样的功能,以创建一个包含多个选项卡...

    Fragment 自定义顶部选项卡

    总之,自定义`Fragment`选项卡是Android应用开发中的常见需求,通过`TabLayout`和`ViewPager`的结合,我们可以创建出各种各样的顶部导航效果。关键在于理解和利用好这两个组件的特性,以及适时地自定义样式和行为,...

    8. android Tab 选项卡控件

    在Android开发中,Tab选项卡控件是一种常见的用户界面组件,用于分割并展示大量内容,让用户可以在多个视图之间轻松切换。本教程将详细介绍如何在Android应用中实现一个简单的Tab选项卡控件。 首先,我们需要引入...

    Android Tab 选项卡 切换

    总的来说,实现Android Tab选项卡切换需要对`ViewPager`和`TabLayout`有深入的理解,同时掌握`Fragment`或`Activity`的使用。通过合理的布局设计和事件处理,我们可以创建出符合Android Material Design规范的、功能...

    android Tab选项卡

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

    android TabHost自定义选项卡

    在Android应用开发中,TabHost是一个非常重要的组件,它允许我们创建带有多个选项卡的应用界面。这个组件在早期的Android版本中广泛使用,为用户提供了一种便捷的方式来组织和切换不同的视图或活动。本文将深入探讨...

    android自定义tabhost样式

    在Android开发中,TabHost是一个非常重要的组件,它允许开发者在一个Activity中创建多个Tab来展示不同的内容。本篇文章将深入探讨如何自定义TabHost样式,让应用界面更加美观且符合用户体验。 首先,我们需要理解...

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

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

    安卓FragmentTab选项卡相关-android自定义中间带圆形按钮的底部导航控件.rar

    这个压缩包“安卓FragmentTab选项卡相关-android自定义中间带圆形按钮的底部导航控件.rar”似乎包含了一个定制化的底部导航条,该导航条在中间带有圆形按钮,这在许多现代移动应用中是流行的设计模式。 首先,...

    android 用ViewStub实现Tab选项卡效果

    在Android开发中,创建Tab选项卡效果是一种常见的需求,它能帮助用户在多个视图间进行切换,提高交互体验。ViewStub是一个轻量级的View,通常用于延迟加载布局,它在XML布局文件中占据几乎为0的内存空间,直到被 ...

    Android垂直tab导航栏、左侧竖直tab导航栏

    此外,这种竖直选项卡还支持自定义tab样式,这对于品牌识别和用户体验的提升非常有帮助。开发者可以通过设置颜色、字体、图标等属性,使选项卡与应用的整体风格保持一致,提高用户的视觉舒适度和操作满意度。 自带...

    android 两种TAB选项卡切换功能项目

    本项目提供了两种不同的实现方式来创建TAB选项卡切换,使得开发者可以根据需求选择适合的方法。下面将详细介绍这两种方法。 1. 使用TabLayout + ViewPager TabLayout是Android Support Library中的组件,它与...

    RadioButton实现底部带指示条的Tab选项卡三个和两个tab的都有

    总的来说,"RadioButton实现底部带指示条的Tab选项卡"是一个结合了UI设计和事件处理的Android开发任务,涉及到RadioButton、RadioGroup、自定义样式、布局管理和用户交互等多方面的知识。通过这个项目,开发者不仅...

Global site tag (gtag.js) - Google Analytics