安卓- iPhone风格的选项卡宿主

30

是否有可能将Android Tabhost的样式设置得像iPhone那样呢?如果不行,是否有任何开源代码可以展示如何为Android创建底部标签?

alt text
(来源:appshopper.com)
alt text


22
系统标签有什么问题吗,除了它们看起来不像 iPhone 标签之外?为什么要强迫用户学习不同平台的界面标准呢?安卓用户已经知道如何与安卓标签交互了。没有必要毫无理由地打破他们的期望,这只会使您的应用程序变得不那么易用。 - Yoni Samlan
14
@Yoni. 是的,我想要底部选项卡,因为我打算在顶部放上“返回”按钮。另外,你说的“为什么要强制用户学习不同平台的UI标准”的意思是什么? 如果任何人在使用不同的UI,那就是谷歌自己了。看一下“Android Market”,“Google Finance”等应用,使用的是哪种UI?我的意思是,“Android Market”中使用了哪个tabHost或ListView? - Soni Ali
3
硬件上的“返回”按钮有问题吗?在屏幕上有一个返回按钮非常不寻常;Android用户知道如何使用设备上的物理返回按钮。话虽如此,有时需要在某些视图中使用自定义选项卡式控件(就像Alex提到的那样),通常是为了根据不同的条件过滤列表(例如在市场中),但这是一种不同的情况。看起来,上面的截图非常适合使用普通的Android选项卡。 - Yoni Samlan
3
你应该覆盖硬件返回按钮,这样用户会期望物理返回按钮关闭过滤模式,而不是退出活动。在同一上下文中给他们两个不同的返回按钮(硬件和软件)分别执行两个不同的操作可能会让用户感到困惑。 - Yoni Samlan
1
+1 @Yoni,你的第一条评论已经表达了你的观点,但它仍然是一个非常好的观点。 - Terrance
显示剩余8条评论
4个回答

68
我建议你们不要更改标签的默认外观和感觉,因为Android设备上的用户有自己的用户体验,你会削弱他们过去的经验,所以不要强迫他们学习新的标签体验(因为移动用户很懒,通常依赖于他们过去的经验)。 详情请见Pure Android
但是如果你想继续下去,我已经将默认的Android Tabs 定制成看起来像iPhone标签页。这是简单的,并且具有默认的Android标签页Ui组件(TabHost, TabWidget)。
下载链接:GitHub, Iphone-Tab-in-Android 此示例已升级使用了TabLayoutViewPager 相关博客可以在此找到: Android中的类似iPhone的选项卡 屏幕截图: tabs at bottom screenshot 我还定制了TabHost以看起来像中心凸起的选项卡: Raised Center Screenshot

要下载RaiseCenterTab,请前往GitHub:RaisedCenterTab


3
有解决方案很好,但是没有解释,并且GitHub项目只有一个压缩文件?至少在GitHub上解压缩代码,以便可以在线阅读。 - HRJ
6
大家好!已解压并添加了源代码 :) - Adil Soomro
1
干得好,阿迪尔!有没有一种通过XML获取蓝色色调并避免使用图像的方法? - Rahul Choudhary
1
很酷的东西,Adil。即使我不像其他用户那样可以直接使用,但我仍然非常感激!不过我有一个问题,你是如何在 Photoshop 中为所选图标创建蓝色色调的呢?我完全不会 PS。 - georgiecasey
4
什么废话,怎么可能有人能做出这样好的例子? - MKJParekh
显示剩余4条评论

16

你需要自己构建此控件。 可选方案:

  • 使用RadioGroup并在其中放置自定义单选按钮,然后自定义其外观。

  • 从头开始构建此控件,从一个布局(帧、相对、线性)中继承它,并构建所需的行为。

  • 还可以使用TabHost源代码作为您的控件基础。


你可以在这里找到使用RadioGroup替换Tab的示例:http://mokriya.com/blog/2011/02/13/custom-tabs-in-android/ - anticafe
@anticafe的链接失效了,您能提供其他相同内容的演示链接吗? - NIKHIL
你能否看一下 https://github.com/makeramen/android-segmentedradiobutton 作为替代品? - anticafe
3
@neild,我们已将博客文章移至http://blog.mokriya.com/post/15342694933/custom-tabs-in-android。 - Mohith Km
@alex 你的想法很有帮助。 - umesh
@MohithKm的教程链接非常好用,而且设置非常简单。 - bentzy

5

1

你的屏幕截图显示了 Android 1.6 的样式。如果你在更新的版本上使用 tabhost 并将其放置在屏幕底部,它看起来会非常像 iPhone 版本。

我不会改变 Android UI 太多,只需使其与 iPhone 的外观和感觉相似(相同的图标),并保持其余部分的 Android 风格。这将使应用程序对用户更加熟悉。

要实现相同的图标外观,只需使用一个 XML 定义你的 drawable,其中包含按钮的选中和未选中状态,就像 iPhone 上的外观一样。要设置图标,请使用 tabspec 的 setIndicator 方法。

你可以通过为 tabwidget 设置背景或样式来稍微调整 tabhost 的样式。但是,小部件的实际内部部分将在你的样式和背景之上绘制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接