如何在Android上的选项卡之间实现滑动?
适用于Android 4.0标签的关键设计建议之一是allow swiping。此行为使用户能够跨所选标签的内容水平滑动以导航到相邻标签,而无需直接与标签本身进行交互。如何在Android上的选项卡之间实现滑动?
这是如何实现的?
注意:这是从Android Training类Implementing Effective Navigation的摘录。
为了实现这一点(在Android的3.0或以上)时,可以结合使用一个ViewPager与ActionBar选项卡API。
观察当前页面变化后,选择相应的选项卡。您可以在活动的onCreate()
方法使用ViewPager.OnPageChangeListener设置此行为:
@Override
public void onCreate(Bundle savedInstanceState) {
...
mViewPager.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// When swiping between pages, select the
// corresponding tab.
getActionBar().setSelectedNavigationItem(position);
}
});
...
}
而且在选择一个选项卡,切换到相应的页面中ViewPager。要做到这一点,利用newTab()
方法创建时,它添加一个ActionBar.TabListener到您的标签:
actionBar.newTab()
...
.setTabListener(new ActionBar.TabListener() {
public void onTabSelected(ActionBar.Tab tab,
FragmentTransaction ft) {
// When the tab is selected, switch to the
// corresponding page in the ViewPager.
mViewPager.setCurrentItem(tab.getPosition());
}
...
}));
如果您在下面的Android 3.0针对API,则不能使用上述罗马的解决方案。
我写了一个blog post here关于如何使用ActionBarSherlock完成同样的事情,如果任何人有兴趣。
如果您添加Android可压缩性支持库http://developer.android.com/tools/extras/support-library.html,则可以使用早期版本的解决方案。使用最新的Eclipse ADT插件,只需右键单击该项目并选择“Android Tools”>“添加支持库”即可。该项目必须针对API 14或更高版本(即Android 4+)构建,同时使用例如'
@ JesperB-如果我需要在我的TabHost中实现在Android 2.3.3下的Android应用程序定位API之间实现Swipe,并且不使用ActionBarSherlock,该怎么办?你能告诉我一些什么吗??? – 2013-01-02 07:12:16
@ JesperB-其实我已经使用tabview的应用程序工作得很好......我只需要更新滑动功能! – 2013-01-02 07:13:38
Hi Roman, 请研究一个实现ant adapter的示例,以实现包含多个动态创建/可替换片段的多个窗格布局。挑战: - FragmentManager使用资源ID来添加碎片ID在页面间必须是唯一的(您不能指定ViewGroup实例作为容器) - 在FragmentManager尝试恢复片段之前,容器视图必须存在 - 保留实例与方向更改错误 #1:FragmentManager尝试保存时出现NullPointerException片段状态; #2:LoaderInfo.onLoadComplete周围的NullPointerException – user289463 2012-04-13 08:53:57
你应该问这是一个新问题。 – 2012-04-13 15:10:09
如果您将菜单图标添加到操作栏并使用ViewPager,则会发生奇怪的事情... – Maxim 2013-05-09 05:24:48