`
liuweisir
  • 浏览: 43386 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Android: 自定义Tab样式(转)

阅读更多

1.制作4个9patch的tab样式,可参考android默认的资源

tab_unselected.9tab_unselected.9.png tab_selected.9tab_selected.9.pngtab_press.9tab_press.9.pngtab_focus.9tab_focus.9.png

这4个资源分别代表Tab的4种状态。

2.定义Tab的selector样式(就叫它tab_indicator.xml好了),将其放入drawable文件夹下,代码如下:

 

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android">  
    <!-- Non focused states -->  
    <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_unselected" />  
    <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_selected" />  
    <!-- Focused states -->  
    <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/tab_focus" />  
    <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_focus" />  
    <!-- Pressed -->  
    <item android:state_pressed="true" android:drawable="@drawable/tab_press" />  
</selector>  

 

3.编写indicator的布局文件(不妨也叫tab_indicator.xml),将其放入layout文件夹下,代码如下:

 

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="0dip"  
    android:layout_height="64dip"  
    android:layout_weight="1"  
    android:layout_marginLeft="-3dip"  
    android:layout_marginRight="-3dip"  
    android:orientation="vertical"  
    android:background="@drawable/tab_indicator">  
    <ImageView android:id="@+id/icon"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_centerHorizontal="true"  
    />  
    <TextView android:id="@+id/title"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignParentBottom="true"  
        android:layout_centerHorizontal="true"  
        style="?android:attr/tabWidgetStyle" mce_style="?android:attr/tabWidgetStyle"  
    />  

 

4.接下来就是在TabActivity中使用我们自己编写的Tab样式了:

 

// 首先获取TabWidget  
mTabHost = getTabHost();  
LinearLayout ll = (LinearLayout)mTabHost.getChildAt(0);  
TabWidget tw = (TabWidget)ll.getChildAt(0);  

 

然后用类似如下代码创建TabSpec,就大功告成了。

 

RelativeLayout tabIndicator1 = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.tab_indicator, tw, false);  
TextView tvTab1 = (TextView)tabIndicator1.getChildAt(1);  
tvTab1.setText("tab1");  
mTabHot = mTabHost.newTabSpec("TAB_1")  
        .setIndicator(tabIndicator1)  
        .setContent(contentIntent); 
分享到:
评论

相关推荐

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

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

    android实现自定义tab页

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

    android自定义tabhost样式

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

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

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

    自定义Tab样式

    本文将详细讲解如何实现自定义Tab样式,特别是将Tab标签置于底部的场景,以及如何使用TabHost组件来搭建这样的界面。 首先,我们需要理解TabHost组件。TabHost是Android提供的一个容器,它允许我们在一个Activity中...

    RadioGroup自定义选项卡样式

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

    android自定义Tab选项卡控件

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

    android TabHost自定义选项卡

    4. 自定义Tab外观: 要自定义选项卡的外观,你可以覆盖TabWidget的默认样式。这可以通过设置自定义布局文件来实现,或者在代码中修改TabSpec的指示器。 ```xml &lt;!-- custom_tab.xml --&gt; &lt;LinearLayout xmlns:...

    android gallery 导航TAB样式 非常的漂亮和实用

    在本示例中,"android gallery 导航TAB样式 非常的漂亮和实用",我们可以看到开发者通过自定义布局和样式,使得`Gallery`不仅具备了导航功能,还拥有美观的视觉效果。 `Gallery`的基本用法包括设置适配器(Adapter...

    Android底部tab栏与标题栏结合

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

    android Tab自定义

    为了让Tab更符合底部导航栏的风格,我们可能需要自定义Tab的样式,包括字体、颜色、背景等。这可以通过创建新的主题或者在布局中直接设置样式来实现。 5. **使用Fragment替换Activity** 考虑到现代Android开发的...

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

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

    android自定义RadioButton

    首先,我们来看标题中的“android自定义RadioButton”。在Android中,自定义RadioButton主要涉及以下几个方面: 1. **绘制自定义背景**:这通常通过创建XML drawable文件来实现。例如,在`button1.9.png`、`button...

    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. **注意事项**:确保在不同的设备和...

    android底部tab布局

    步骤3:自定义Tab样式 为了达到高仿微博的效果,我们可能需要对Tab的样式进行定制。这包括改变Tab的文字颜色、背景颜色、图标等。可以通过自定义布局文件实现,然后在setIndicator方法中传入这个自定义布局。 ```...

    android纵向的tab

    4. **自定义Tab样式** 为了实现纵向的Tab,我们需要自定义`TabLayout`的样式。这通常涉及到使用`TabLayout.OnTabSelectedListener`监听Tab的选择状态,并使用`TabLayout.addTab()`方法动态添加Tab。 5. **编程实现...

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

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

    Android 自定义底部TAB

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

    Android-自定义蚂蜂窝app滑动tab实现波浪线滑动View

    通过MaFengWoTab-master这个项目源码,你可以看到具体的实现细节,包括类结构、绘图逻辑和动画控制,这对于提升Android自定义视图开发能力是非常有价值的。在实际开发中,可以根据自己的需求进行修改和扩展,创造出...

Global site tag (gtag.js) - Google Analytics