Android:可以在屏幕上创建底部和顶部选项卡吗?
我想知道是否有可能在顶部和底部有不同的选项卡,从而在单击时导致不同的活动。谷歌搜索了一下,但什么也没找到Android:可以在屏幕上创建底部和顶部选项卡吗?,android,tabs,Android,Tabs,我想知道是否有可能在顶部和底部有不同的选项卡,从而在单击时导致不同的活动。谷歌搜索了一下,但什么也没找到 谢谢安卓的好处是,你想做的几乎每件事都应该是可能的。如果我们要更改您的XML,我们会将其更改为: <?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabh
谢谢安卓的好处是,你想做的几乎每件事都应该是可能的。如果我们要更改您的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>
请注意,我已经更改了TabWidgets的ID
这只是问题的一半。另一半是核心类TabHost
的源代码应该如何更改以适应此更改
您可以查看原始TabHost
的源代码。从源代码看,很明显代码只有一个mTabWidget,这是使用非常特定的ID=选项卡进行初始化的(com.android.internal.R.ID.tabs
)。我们已经更改了ID,所以我们应该注意这一点
那么,我们怎样才能改变原始来源呢?一种方法是创建我们自己的类并扩展核心TabHost。这并不容易,因为原始TabHost中有一半的函数和成员是私有的(为什么它们不受保护呢?)。不管怎么说,因为你有源代码,而且它非常简单,所以你有可能做到这一点
假设您的新扩展类是MyTabHost
(可能将其放在与原始TabHost相同的包中,这样您就可以访问没有private
或public
的变量/函数),然后您可以将XML中的单词TabHost
替换为MyTabHost
或com.yourpackage.MyTabHost
,然后您的类将在XML中使用,而不是原始类
从源代码来看,很明显默认情况下不支持此功能。但是-我认为,如果你真的想实现它,你可以找到一种方法。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>
请注意,我已经更改了TabWidgets的ID
这只是问题的一半。另一半是核心类TabHost
的源代码应该如何更改以适应此更改
您可以查看原始TabHost
的源代码。从源代码看,很明显代码只有一个mTabWidget,这是使用非常特定的ID=选项卡进行初始化的(com.android.internal.R.ID.tabs
)。我们已经更改了ID,所以我们应该注意这一点
那么,我们怎样才能改变原始来源呢?一种方法是创建我们自己的类并扩展核心TabHost。这并不容易,因为原始TabHost中有一半的函数和成员是私有的(为什么它们不受保护呢?)。不管怎么说,因为你有源代码,而且它非常简单,所以你有可能做到这一点
假设您的新扩展类是MyTabHost
(可能将其放在与原始TabHost相同的包中,这样您就可以访问没有private
或public
的变量/函数),然后您可以将XML中的单词TabHost
替换为MyTabHost
或com.yourpackage.MyTabHost
,然后您的类将在XML中使用,而不是原始类
从源代码来看,很明显默认情况下不支持此功能。但是——我认为,如果你真的想实现这一目标,你可以想方设法。当然。在两端抛出一个TabView。现在,让它们正确地协同工作可能需要额外的工作。请提供有关您的问题的更多信息,您是在尝试在顶部和底部使用不同的选项卡,还是仅使用两个具有相同选项卡的栏?我已尝试复制我的TabWidget,但没有成功。你能说得更具体些吗?thanksim试图在顶部和底部有不同的标签,从而导致不同的活动。回答:编辑我的问题以更好地理解Sure。在两端抛出一个TabView。现在,让它们正确地协同工作可能需要额外的工作。请提供有关您的问题的更多信息,您是在尝试在顶部和底部使用不同的选项卡,还是仅使用两个具有相同选项卡的栏?我已尝试复制我的TabWidget,但没有成功。你能说得更具体些吗?thanksim试图在顶部和底部有不同的选项卡,从而导致不同的活动。回答:编辑我的问题以便更好地理解