`
rensanning
  • 浏览: 3548073 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38136
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607280
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682277
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89325
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401824
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69685
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91693
社区版块
存档分类
最新评论

Android UI中间凸起的Tab(Raised Center Tabbar)

 
阅读更多
(1)自定义Tab
通过tabHost的indicator来设置自己特殊的布局。
public class MainActivity extends TabActivity {

    TabHost tabHost;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tabHost = getTabHost();
        setTabs();
        tabHost.setCurrentTab(0);
    }

    private void setTabs() {
        addTab("Home", R.drawable.tab_home, HomeActivity.class);
        addTab("Chat", R.drawable.tab_chat, ChatActivity.class);
    }

    private void addTab(String labelId, int drawableId, Class<?> c) {
        TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);
        View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
        TextView title = (TextView) tabIndicator.findViewById(R.id.title);
        title.setText(labelId);
        ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
        icon.setImageResource(drawableId);

        spec.setIndicator(tabIndicator);
        spec.setContent(new Intent(this, c));
        tabHost.addTab(spec);
    }

}


主页面 res/layout/main.xml
把<TabWidget>放在<FrameLayout>的下边,让Tab导航处于屏幕底部
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 ... >
    <TabHost android:id="@android:id/tabhost" .. >
        <LinearLayout .. >
            <!-- 主体内容部分 -->
            <FrameLayout android:id="@android:id/tabcontent" .. />
            <!-- Tab导航部分 -->
            <TabWidget android:id="@android:id/tabs" .. />
        </LinearLayout>
    </TabHost>
</RelativeLayout>


Tab布局  res/layout/tab_indicator.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      :
   >
    <ImageView android:id="@+id/icon"       <-- ①
      :
       />
    <TextView android:id="@+id/title"          <-- ②
      :
        android:textColor="@color/tab_text"   <-- ③
       />
</RelativeLayout>


每个Tab的图标 res/drawable/tab_home.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="false" android:drawable="@drawable/home_normal"/>
    <item android:state_selected="true" android:drawable="@drawable/home_selected" />
</selector>


Tab文字色 res/color/tab_text.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="false" android:color="#f888" />
    <item android:state_selected="true" android:color="#ffff" />
</selector>


(2)做一个中间凸起的Tab

主页面 res/layout/main.xml
TabHost的下边添加
<ImageButton
    android:id="@+id/ibHome"
    android:layout_width="70sp"
    android:layout_height="70sp"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:background="@null"
    android:src="@drawable/camera" />


MainActivity.java
ImageButton ib = (ImageButton) findViewById(R.id.ibHome);
ib.setOnClickListener(new OnClickListener() {
   //...
});


在所有的Tab中间添加一个虚拟的Tab
addTab("", R.drawable.tab_home, HomeActivity.class);


最终效果图:

  • 大小: 16.2 KB
分享到:
评论
1 楼 geofferysun 2015-09-23  
    其实是个假的,只是个样子,多出来那一部分还是不行

相关推荐

    Raised Center Tab.zip

    Raised Center Tab介绍: ...自定义TabHost外观,使中间的tab相对其他tab突起(所谓的Raised Center Tab)。   测试环境: Eclipse 4.2, Android 3.0 以上。 注意:测试环境并不代表适用环境。  

    (0029)-iOS/iPhone/iPAD/iPod源代码-选项卡(Tab Bar)-Raised Center Tab Bar

    总之,这个项目提供了一个实现中间凸起Tab Bar样式的示例,它涉及到了自定义控件、布局计算、事件处理以及响应式设计等多个iOS开发的关键知识点。通过学习和实践这样的案例,开发者能够提升自己的UI设计能力和iOS...

    Raised Center Tab

    "Raised Center Tab"是一种常见的界面设计模式,它使得中间的Tab按钮在视觉上突出,吸引用户的注意力,从而强调当前活动或最重要的选项。这种设计通常用于导航栏,帮助用户在多个功能之间轻松切换。 在Android中...

    android- ios UI style

    文件名 "AdilSoomro-Raised-Center-Tab-in-Android-e287d0c" 提到了“Raised Center Tab”,这是 Android UI 设计中的一种常见元素。在 Material Design 中,中心突出的标签页常用来突出主功能或者进行个性化设计,...

    Raised Center Tab Bar(iPhone源代码)

    来源:Licence:MIT平台:iOS设备:iPhone / iPad作者:Peter Boctor ...自定义中间突起形式的Tab Bar样式,类似的UI在Instagram,Path等应用中可见。支持转屏。 Code4App编译测试,适用环境:Xcode 4.3, iOS 5.0。

    Android、网页开发必备_google风格界面UI组件大全_PSD格式

    本资源“Android、网页开发必备_google风格界面UI组件大全_PSD格式”正是针对这些开发者提供的一款宝贵的工具包,它包含了丰富的Google风格UI组件,以PSD(Photoshop Document)格式提供,便于设计师和开发者进行...

    MaterialDesign:Android UI 控件库

    MaterialDesign 是一个基于 Google 的 Material Design 设计规范的 Android 用户界面控件库,它为开发者提供了丰富的组件,以便创建遵循现代设计风格的应用程序。Material Design 是一套系统性的设计语言,旨在提供...

    Android权限列表permission说明.txt

    - **权限名称**:"android.permission.RAISED_THREAD_PRIORITY" - **应用场景**:适用于需要高性能计算的应用,如游戏或多媒体处理。 #### 9. READ_CONTACTS - **定义**:允许应用程序读取用户的联系人信息。 - **...

    weifenluo.winformsui.docking 2.9(最新源码&例子)

    weifenluo.winformsui.docking 2.9(最新源码&例子) 1. Add an event to the DockPanel that will be raised when the value of the AutoHideWindow's ActiveContent property changes. 2. Opt-in ...

    可自定义TabHost外观效果

    可自定义TabHost外观效果,源码Raised Center Tab,可以支持自定义TabHost外观,使中间的tab相对其他tab突起,也就是所谓的Raised Center Tab的了,大家可以了解一下先,喜欢的朋友可以收藏起来吧。 This ...

    raised-hand-detection-master_handgestures_python手势_dailyxqj_深度学习

    本文将深入探讨“raised-hand-detection-master_handgestures_python手势_dailyxqj_深度学习”这一项目,它展示了如何利用Python和深度学习技术实现手势识别。 首先,手势识别是一种计算机视觉技术,用于理解人类...

    UI识别工具 uispy

    By viewing the application's UI hierarchical structure, property values, and raised events, developers and testers can verify that the UI they are creating is programmatically accessible to assistive...

    Android之permission权限列表[收集].pdf

    8. android.permission.RAISED_THREAD_PRIORITY:允许应用提高线程的执行优先级。 9. android.permission.READ_CONTACTS:允许应用读取用户联系人数据。 10. android.permission.RECEIVE_SMS:允许应用接收短信。 ...

    SwiftUI:使用SwiftUI的示例项目

    with_raised_flag: 如何联系我: SwiftUISwiftUI下拉SwiftUI中的条形图自定义切换按钮菜单按钮 卡应用 捐款如果您喜欢这个项目并希望支持我,则可以通过帮助我获得一品脱来实现。 ;) 学分:copyright:Arvind Patel |...

    Roberta Raised

    "Roberta Raised" 是一款字体设计,它在IT行业中,特别是在图形设计、排版和视觉艺术领域具有重要的地位。字体是计算机用户与文本交互的核心元素,不仅承载着信息,还能传达情感和风格。"Roberta Raised" 可能是一款...

    microsoft uispy

    By viewing the application's UI hierarchical structure, property values, and raised events, developers and testers can verify that the UI they are creating is programmatically accessible to assistive...

    咖啡机 界面

    import javax.swing.BorderFactory; import javax.swing.JPanel;... cabinetView.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); } public JPanel getView(){ return cabinetView; } }

    raised-cosine-error-rate-.zip_raised cosine_升余弦

    本文将深入探讨“raised-cosine_error-rate_.zip”压缩包中的内容,该包涉及到Matlab实现的多径信道下升余弦滚降因子的最佳基带系统误码率(BER)计算。 首先,我们来理解什么是升余弦滤波器。升余弦滤波器得名于其...

    :closed_mailbox_with_raised_flag:RubberStamp是一个Android库,可让您轻松向图像添加水印。-Android开发

    RubberStamp:closed_mailbox_with_raised_flag:RubberStamp是一个Android库,可让您轻松为图像加水印。 功能在图像上添加水印。 它可以是文本或其他图像。 多种方式和功能RubberStamp:closed_mailbox_with_raised_...

Global site tag (gtag.js) - Google Analytics