`
endual
  • 浏览: 3546627 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

自定义android的tab样式

 
阅读更多

 自定义android的tab样式
2011-08-18 16:25:15
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://mmqzlj.blog.51cto.com/2092359/642465
android项目中碰到需要替换tabHost默认样式的情况,需要达到下图的效果:


为了做成这样的效果,花了些时间,这里做个笔记,给有需要的朋友。

步骤一:新建一个xml布局文件,命名main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@android:id/tabhost" android:layout_width="fill_parent"
  android:layout_height="fill_parent" android:background="@color/white">
  <LinearLayout android:orientation="vertical"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <TabWidget android:id="@android:id/tabs"
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:gravity="center_horizontal|center_vertical"/>
    <FrameLayout android:id="@android:id/tabcontent"
      android:layout_width="fill_parent" android:layout_height="fill_parent">
    </FrameLayout>
  </LinearLayout>
</TabHost>

步骤二:在Activity中添加我们的tab

代码如下
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  mTabHost = getTabHost();
        
  Intent intent1 = new Intent(this,OfficialActivity.class);
  createTab("公共聊天室",intent1);
        
  Intent intent2 = new Intent(this, NearByActivity.class);
  createTab("周边",intent2);
        
  Intent intent3= new Intent(this, HistoryActivity.class);
  createTab("历史",intent3);
        
  mTabHost.setCurrentTab(1);
}

 private void createTab(String text ,Intent intent){          mTabHost.addTab(mTabHost.newTabSpec(text).setIndicator(createTabView(text)).setContent(intent));
    }

    private View createTabView(String text) {
            View view = LayoutInflater.from(this).inflate(R.layout.tab_indicator, null);
            TextView tv = (TextView) view.findViewById(R.id.tv_tab);
            tv.setText(text);
            return view;
    }

步骤三:在createTabView方法中,我们载入了布局文件tab_indicator.xml,改布局很简单,就是放置一个带背景的布局,在布局中放一个textView用于显示tab标题,以下为该布局文件内容
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_height="fill_parent" android:layout_width="fill_parent"
  android:orientation="vertical" android:gravity="center" 
  android:theme="@android:style/Theme.NoTitleBar" android:background="@drawable/chat_tab_selector">
  <TextView android:id="@+id/tv_tab" android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:text="tab1" android:textColor="@color/white"/>
</LinearLayout>

步骤四:在上面的布局文件中我们把该布局的背景定义为chat_tab_selector,这里同样需要在drawable文件夹下新建chat_tab_selector.xml,内容很简单,就是做一个按下时的背景切换,内容如下:

<?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android = "http://schemas.android.com/apk/res/android">    
        <item    
        android:state_focused = "true"    
        android:drawable = "@drawable/topbar_bg_down"    
        /> 
        <item    
        android:state_selected = "true"    
        android:drawable = "@drawable/topbar_bg_down"    
        /> 
        <item    
        android:state_pressed = "true"    
        android:drawable = "@drawable/topbar_bg_down"    
        />     
        <item android:drawable = "@drawable/topbar_background" />    
        </selector>    

里面做了两张图进行状态切换,这两张图同样放drawable下就可以了

至此,自定义tab的步骤就完成了。如果要做成更复杂的样式,大家可以在此基础上进行扩展。

本文出自 “我的JAVA之路” 博客,请务必保留此出处http://mmqzlj.blog.51cto.com/2092359/642465

分享到:
评论

相关推荐

    android实现自定义tab页

    在Android中,自定义Tab页的外观通常涉及到修改Tab的布局和样式。我们可以创建一个XML布局文件,用于定义每个RadioButton的外观。例如,创建一个名为`custom_tab.xml`的文件,包含RadioButton的文本、图标以及所需的...

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

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

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

    你可以创建一个`LinearLayout`或`RelativeLayout`,并添加需要的控件(如`TextView`、`ImageView`等)来实现自定义的tab样式。 ```java TabLayout tabLayout = findViewById(R.id.tab_layout); TabLayout.Tab tab =...

    Android 自定义底部TAB

    本篇文章将深入探讨如何在Android中实现自定义的底部TAB,以满足个性化需求。 首先,我们需要理解Android的UI组件系统。在Android中,底部导航栏通常由`BottomNavigationView`或自定义视图来实现。对于自定义底部...

    自定义分类Tab菜单条

    2. **实现自定义View**:在Android中,可以创建一个新的Java或Kotlin类继承自`View`或`ViewGroup`,如`LinearLayout`或`RelativeLayout`,然后重写其`onDraw()`方法以绘制自定义的Tab。或者,你可以使用`...

    android自定义Tab选项卡控件

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

    自定义Android的TabHost控件样式

    本文将深入探讨如何自定义Android的TabHost控件样式。 首先,我们从基础开始。TabHost是Android提供的一个布局容器,它包含一个TabWidget(显示各个Tab)和一个FrameLayout(用于显示被选中的Tab的内容)。默认的...

    android自定义tabhost样式

    通过以上步骤,我们已经成功地自定义了Android的TabHost样式。这不仅可以提升应用的视觉效果,还可以提高用户的交互体验。记得在实际项目中,要根据需求灵活调整样式和逻辑,以达到最佳的效果。同时,阅读博客中的...

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

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

    Android底部tab栏与标题栏结合

    为了实现不同tab有不同的标题显示样式,我们可以在`setTitle()`方法中传入自定义的字符串资源,或者使用自定义的标题视图。例如,我们可以创建一个自定义的`Toolbar`并设置其标题: ```xml &lt;androidx.appcompat....

    RadioGroup自定义选项卡样式

    6. **字体与颜色**:自定义RadioButton的字体大小、颜色,以及选中和未选中时的文字样式,可以使用android:textSize、android:textColor等属性,或者在主题中全局设定。 在TestDemo项目中,你可以找到一个实际的...

    Android tab 栏居中滚动

    `TabLayout`提供了添加Tab、自定义Tab样式以及与`ViewPager`联动的功能,而`ViewPager`则负责管理多个可滑动的页面内容。 2. **居中滚动**: 实现Tab居中滚动的关键在于监听`TabLayout`的滑动事件,并根据当前选中...

    Android Tab实现源码

    总之,"Android Tab实现源码"中的"RaisedCenterTab"是一种高级的自定义Tab实现,它融合了自定义View、触摸反馈、动画效果、适配器、Fragment管理等多个Android开发关键知识点。通过深入研究这个源码,开发者不仅可以...

    Android Tab 页面的使用范例

    在Android开发中,Tab页面是...不过,实际项目中可能需要更复杂的定制,例如添加滑动指示器、自定义Tab样式等,这就需要进一步学习和实践Android的UI定制技巧。希望这个入门示例能为你的Android Tab页面开发提供帮助。

    Android Tab 选项卡

    这个源码很可能是使用了`TabLayout`,这是Android Design Support Library提供的组件,它提供了Material Design风格的Tab设计,易于使用且样式美观。 `TabLayout`通常与`ViewPager`结合使用,`ViewPager`用于滑动...

    android Tab 在右侧

    总的来说,"android Tab 在右侧"是一种非标准但可行的界面设计,通过自定义布局和使用适当的组件,开发者可以在Android应用中实现这一功能。理解并掌握如何操作TabHost、TabLayout以及与其配合的组件,是实现这一...

    android Tab页切换的框架demo

    5. **自定义Tab布局**: 有时我们可能需要自定义Tab的显示样式,比如设置文字和图标。这可以通过重写TabLayout的TabView或者使用CustomTabLayout实现。 6. **事件监听**: 为了响应用户的Tab切换操作,需要为...

    Android提高十八篇之自定义Menu(TabMenu)

    5. **自定义Tab样式** 可以通过`TabLayout.OnTabSelectedListener`监听Tab选中状态,或者自定义`TabLayout.Tab`的视图,以实现个性化标签样式。 6. **源码解析** 了解`Menu`和`TabLayout`的内部工作原理,可以...

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

    1. **自定义Tab样式** - 图片+文字:为了实现这种样式,我们需要创建一个自定义的View,包含ImageView和TextView,然后在TabLayout的Tab中使用这个自定义View。在Adapter中,我们可以通过`TabLayout.Tab....

    Android滑动切换tab(切换带动画)

    6. **个性化Tab**:如果你需要更复杂的Tab样式,例如自定义图标或文字颜色,可以重写`TabLayout`的`Tab`对象,使用`setIcon`和`setText`方法,或者设置自定义的`TabView`。 7. **注意事项**:确保在不同的设备和...

Global site tag (gtag.js) - Google Analytics