Android:是否可以在屏幕上同时创建底部和顶部选项卡?

标签 android tabs

我想知道顶部和底部是否可以有不同的选项卡,单击时会导致不同的 Activity 。谷歌搜索但没有找到任何相关信息。

谢谢

最佳答案

Android 的好处是几乎所有你想做的事情都可以实现。如果我们要更改您的 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" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TabWidget
        android:id="@android:id/tabs_top"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0" />

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />

    <TabWidget
        android:id="@android:id/tabs_bottom"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0" />
</LinearLayout>

</TabHost>

请注意,我已经更改了 TabWidget 的 ID。

这只是问题的一半。另一半是如何更改核心类 TabHost 的源代码以适应此更改。

您可以查看原始TabHost的来源here 。查看源代码,很明显代码有一个 mTab​​Widget,并且它是使用非常具体的 ID = tabs (com.android.internal.R.id.tabs )。我们已经更改了 ID,因此我们应该注意这一点。

那么,我们如何改变原始来源呢?一种方法是创建我们自己的类并扩展核心 TabHost。这并不容易,因为原始 TabHost 中的一半函数和成员是私有(private)(为什么它们不 protected ?!?)。无论如何,既然你有源代码并且非常简单,那么就有可能做到。

假设您的新扩展类是 MyTabHost (可能将其放置在与原始 TabHost 相同的包中,这样您就可以访问没有 privatepublic),那么您实际上可以在 XML 中将 TabHost 替换为 MyTabHostcom.yourpackage.MyTabHost ),然后您的类将在 XML 中使用,而不是原始的。

从源码来看,很明显默认是不支持这个功能的。但是 - 我认为如果你真的想实现它,你可以找到办法。

关于Android:是否可以在屏幕上同时创建底部和顶部选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777168/

相关文章:

android - 将 firebase 添加到我的 Android 项目时出错

ios - 转到另一个选项卡中的详细 View Controller ?

tabs - 标签大小和缩进大小

android - 在游戏结束时存储数据 Unity

Android:每个表的ContentProvider/处理一对多关系

android - 如何在没有上下文的情况下在应用程序的任何位置显示对话框?

c# - Xamarin.Android 类未找到异常 'mono.android.app.Application'

Firefox 在浏览器的新选项卡中打开针对 iFrame 的链接

matlab - 具有多个选项卡的多个编辑器窗口

c# - 在 WPF MVVM 应用程序中的选项卡之间正确导航