- 浏览: 205821 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xumin_minzi:
我也在使用ndk编译,ffmpeg源码放在哪个目录里面?
[原创]Android ndkr8编译 FFmpeg 0.11.1 "Happiness" -
ericchan2012:
在Dialog调用show方法之后
【原创】Android 设置Dialog的长宽和位置 -
maohualei:
求解: 我设置的时候 位置居然没有反应 dial ...
【原创】Android 设置Dialog的长宽和位置
这个主要是实现底部的tabhost方式,tabhost就是有几个标签滑动的一个控件。activity继承TabActivity
其他不多说了,直接上代码
这个是主类
再看看主布局文件:
这样,基本上一个可用的tabhost就可以了。
附件是代码
其他不多说了,直接上代码
public class main extends TabActivity { private TabHost tabHost; private TabWidget tabWidget; Field mBottomLeftStrip; Field mBottomRightStrip; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); makeTab(); } public void makeTab() { if (this.tabHost == null) { tabHost = getTabHost(); tabWidget = getTabWidget(); tabHost.setup(); tabHost.bringToFront(); TabSpec firsttab = tabHost.newTabSpec("firsttab"); TabSpec sencondtab = tabHost.newTabSpec("sencondtab"); TabSpec thirdtab = tabHost.newTabSpec("thirdtab"); firsttab.setIndicator("first", getResources().getDrawable(R.drawable.first)).setContent( new Intent(this, first.class)); sencondtab.setIndicator("second", getResources().getDrawable(R.drawable.second)).setContent( new Intent(this, second.class)); thirdtab.setIndicator("third", getResources().getDrawable(R.drawable.third)).setContent( new Intent(this, third.class)); tabHost.addTab(firsttab); tabHost.addTab(sencondtab); tabHost.addTab(thirdtab); if (Integer.valueOf(Build.VERSION.SDK) <= 7) { 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.linee)); mBottomRightStrip.set(tabWidget, getResources() .getDrawable(R.drawable.linee)); } catch (Exception e) { e.printStackTrace(); } } else { try { mBottomLeftStrip = tabWidget.getClass().getDeclaredField( "mLeftStrip"); mBottomRightStrip = tabWidget.getClass().getDeclaredField( "mRightStrip"); if (!mBottomLeftStrip.isAccessible()) { mBottomLeftStrip.setAccessible(true); } if (!mBottomRightStrip.isAccessible()) { mBottomRightStrip.setAccessible(true); } mBottomLeftStrip.set(tabWidget, getResources().getDrawable(R.drawable.linee)); mBottomRightStrip.set(tabWidget, getResources() .getDrawable(R.drawable.linee)); } catch (Exception e) { e.printStackTrace(); } } for (int i = 0; i < tabWidget.getChildCount(); i++) { View view = tabWidget.getChildAt(i); if (tabHost.getCurrentTab() == i) { view.setBackgroundDrawable(getResources().getDrawable( R.drawable.focus)); } else { view.setBackgroundDrawable(getResources().getDrawable( R.drawable.unfocus)); } } tabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { for (int i = 0; i < tabWidget.getChildCount(); i++) { View view = tabWidget.getChildAt(i); Toast.makeText(main.this, tabId, Toast.LENGTH_SHORT).show(); if (tabHost.getCurrentTab() == i) { view.setBackgroundDrawable(getResources() .getDrawable(R.drawable.focus)); } else { view.setBackgroundDrawable(getResources() .getDrawable(R.drawable.unfocus)); } } } }); } } }
这个是主类
再看看主布局文件:
<?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"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1"> </FrameLayout> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_alignParentBottom="true" android:layout_height="wrap_content"/> </LinearLayout> </TabHost>
这样,基本上一个可用的tabhost就可以了。
附件是代码
- TestTab.tar.gz (64.5 KB)
- 下载次数: 39
发表评论
-
拖拽滑动_有3D_有循环
2012-12-11 17:38 1135android桌面拖拽3d效果 -
三星通讯录滑动出发开关
2012-12-11 17:37 903下面的代码是仿三星9300中的滑动打电话和发短信的。 -
三星通讯录滑动触发开关以及StatusBar下拉快捷键的效果
2012-10-20 17:26 13871,三星通讯录滑动触发开关 你可以参考: http://gja ... -
android水波纹效果之一
2012-09-17 22:27 1183参考: http://www.apkbus.com/archi ... -
为launcher添加一个仿Mac的dock(附源码)
2012-09-17 21:50 942之前在网上看到有篇文章:Launcher之Dock细节篇htt ... -
android桌面预览效果
2012-09-17 21:49 974主要改动的是:workspace.Java和launcher. ... -
Android 自定义滚动视图
2012-08-24 22:39 568MainActivity package org. ... -
实现通讯录的弹窗效果
2012-08-19 22:06 1767参考http://www.cnblogs.com/noTice ... -
【原创】android ViewPager控件的使用
2012-06-15 10:33 2390android4.0有个控件,就是viewpager,用来实现 ... -
【原创】android 实现气泡式listview
2012-06-14 13:33 1974iphone中短信聊天都是那种气泡式的,当然,android短 ... -
【原创】android中定义BaseActivity
2012-06-13 12:53 5645[size=medium] 需求: 如果一个应用程序中有许多a ... -
【原创】android进入应用程序时的动画实现
2012-06-12 11:34 1449相信玩过android应用的同学都看过进入应用程序时出现的短暂 ... -
【原创】android仿ucweb的菜单效果
2012-06-12 11:12 1154[size=medium]先看一张图 这里有几个要点 1,主 ... -
【原创】android2.3如何加入对wml的支持
2012-06-12 09:52 1307其实就是改makefile文件: 1,开启宏定义: 在exte ... -
【原创】dip与px
2012-06-11 10:38 871真正要做适配的,只有是当图片被拉抻后,是否变形了,如果变形了, ... -
【原创】Android aidl实现两个apk之间远程调用Service
2012-06-07 11:12 4968Aidl,android平台的IPC方式之一,基于系统的Ibi ... -
【转】Android-Action Bar使用方法
2012-06-06 14:49 1822转自http://disanji.net/2011/02/24 ... -
【原创】Android仿新浪微博的“更多”页面效果
2012-05-29 17:38 2239看到新浪微博那个“更多”页面的效果,感觉不错,所以拿来模仿一下 ... -
【原创】Android 设置Dialog的长宽和位置
2012-05-28 10:11 2720在Dialog调用show方法之后,加上以下代码: Wi ... -
【原创】Android 实现微博分享功能
2012-05-27 22:20 1467通过发送下面的intent: Intent intent = ...
相关推荐
在Android开发中,TabHost是实现底部导航菜单的一种传统方式,它允许用户在多个标签页之间切换,每个标签页通常代表一个不同的功能区域。本文将详细介绍如何使用TabHost来创建带有图片和文字,并且在选中时有明显...
要实现"android中fragment实现tabhost标签切换效果",首先需要创建多个Fragment类,每个类代表一个Tab下的内容。这些Fragment类应该继承自`androidx.fragment.app.Fragment`(如果支持AndroidX库)或`android.app....
下面将详细介绍如何使用`TabHost`来实现底部菜单栏。 ### 1. `TabHost`概述 `TabHost`是Android中的一个容器,它可以容纳多个`TabWidget`(选项卡)和一个`FrameLayout`(内容区域)。`TabWidget`显示选项卡,`...
在Android开发中,TabHost是实现底部导航栏(Tab Bar)的一种传统方式,它允许用户在不同的内容区域之间切换,通常用于多视图的应用设计。本文将深入探讨如何使用TabHost来实现在Android应用底部显示选项卡的功能。 ...
本教程将详细讲解如何利用Fragment技术实现底部TabHost的效果,同时涉及自定义控件和通过代码动态加载布局的方法。 首先,我们需要理解Fragment的基本概念。Fragment是Android中的一个组件,它代表应用程序界面的一...
在Android应用开发中,TabHost是一个非常常见的组件,用于实现多标签页面的切换。本话题主要探讨如何在应用中实现“底部TabHost嵌套顶部TabHost”的设计,以及顶部TabHost如何与ListView协同工作,创建类似网易新闻...
总之,`TabHost`是Android早期用于实现底部菜单栏的一种方式,尽管已不再是首选方案,但在某些场景下仍然有其价值。理解`TabHost`的工作原理和使用方法,可以帮助开发者更好地理解和处理老项目,或者在特定需求下...
RadioButton是Android中的单选按钮,属于Compound Button的一种,它允许用户在多个选项中选择一个。在一个RadioGroup中,用户只能选择一个RadioButton,这与TabHost让用户在多个标签之间切换的概念相吻合。 要实现...
3. 自定义TabHost样式:为了实现底部的TabHost,我们可以使用自定义的BottomNavigationView替换默认的TabWidget。BottomNavigationView是Android Material Design组件库中的一个控件,可以方便地创建底部导航栏。在...
在Android开发中,...同时,随着Android版本的更新,谷歌推出了新的底部导航实现方式,如BottomNavigationView,虽然TabHost在现代Android开发中使用较少,但在一些旧项目或简单应用中,它仍然是一个实用的选择。
以上就是关于"Android fragment 内部嵌套tabhost组件"的相关知识点,实际开发中还需要根据具体需求进行调整和优化,以实现最佳的用户体验。在给定的HarlanFragment示例中,可以进一步学习如何将这些概念应用于实践。
在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个Tab标签的界面,每个标签可以展示不同的内容或活动(Activity)。本教程将详细介绍如何使用TabHost,特别适合初学者和教学场景,例如构建一个模拟...
本示例是关于如何在Android中实现嵌套的TabHost,即两个层级的TabHost,类似于网页中的二级菜单栏,这种设计可以提供更丰富的用户交互体验。 首先,我们要理解TabHost的基本概念。TabHost是一个容器,它可以包含一...
在Android开发中,TabHost是一个非常重要的组件,它允许开发者创建多标签的界面,每个标签可以关联一个不同的Activity或者Fragment。然而,系统默认的TabHost功能有限,样式和交互方式可能无法满足所有项目的需求,...
在Android应用开发中,TabHost是一个非常重要的组件,用于创建具有多个标签(Tab)的用户界面,每个标签可以展示不同的内容或功能。TabHost通常与TabWidget结合使用,为用户提供一种便捷的方式来切换不同的视图。...
通过以上步骤,你可以成功地自定义Android中的TabHost组件,使其显示在屏幕底部并实现滑动切换页面的功能。这将极大地提升应用的用户交互体验,使得用户可以方便地在不同的功能之间切换。记得下载提供的TestTabHost2...
`RadioButton`是Android中的一个视图组件,通常与RadioGroup一起使用,用于创建单选选项。每个RadioButton代表底部导航栏中的一个标签,用户点击后会高亮显示,表示当前选中的页面或功能。 3. **TabHost**: ...
TabHost实现底部菜单, 底部菜单选项卡主要是通过TabHost和RadioGroup实现
在Android开发中,"可滑动的TabHost"是一种常见的用户界面组件,它结合了TabHost和ViewPager的优点,提供了一种动态、可滑动的方式来切换不同的内容片段。TabHost是Android原生的一个组件,用于创建带有多个选项卡的...
在Android应用开发中,TabHost是一个非常常见的组件,它用于创建多标签的界面,使得用户可以在不同的功能之间轻松切换。本教程将详细讲解如何使用TabHost来实现类似新浪微博底部导航栏的效果。 首先,我们需要理解...