我正在关注学习Android应用开发的“The Big Nerd Ranch Guide”教科书。 (顺便说一下,这是多么好的书!:))我很享受我的学习过程。我的Java知识有限,所以需要一些时间。
我目前的情况是:
我有兴趣介绍Swipeable Tab视图,但是教科书没有涵盖该部分(可以覆盖Swipeable,但不包括制表视图)。
在该书的第9章中,他解释了如何使用抽象超类(基本上是用于托管单个片段的抽象活动)来重用托管视图。
所以,在我的应用程序开发中,我有一个名为:
的抽象类public abstract class SingleFragmentActivity extends FragmentActivity {
protected abstract Fragment createFragment();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_container_layout);
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.fragmentContainer);
if (fragment == null) {
fragment = createFragment();
fm.beginTransaction()
.add(R.id.fragmentContainer, fragment)
.commit();
}
}
}
从这个抽象类我扩展了我的主要活动,我正在启动一个名为TheZooList的片段:
public class MainActivity extends SingleFragmentActivity {
@Override
protected Fragment createFragment() {
return new TheZooList();}
}
TheZooList现在扩展了一个片段,使用ArrayAdapter
它显示了一长串动物和鸟类。
public class TheZooList extends Fragment
{...}
我希望有两个单独的清单,一个用于动物,一个用于植物,每个都在自己的标签中。
我基本上都被困在这里。从一个流行的blog我能够理解如何引入android中的选项卡,但我无法在我的项目中关联和实现它。
例如,他们使用implements ActionBar.TabListener
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {,,,}
在我的项目中,我应该为哪个课程implements ActionBar.TabListener
:MainActivity
或TheZooList
片段?
非常感谢对后续步骤的任何指导。
答案 0 :(得分:1)
有一个很棒的教程涵盖了这个主题。查看此链接http://developer.android.com/training/implementing-navigation/lateral.html
简而言之:您应该使用ViewPager和标准ActionBar选项卡的组合。您需要确保在使用任一导航方式更改选项卡时都会收到通知。在提供的链接中详细讨论了实现。
祝你好运。答案 1 :(得分:1)
您的问题可能会引起意见。所以这是我的建议。 <figure>
<a href="img/large-image/1.jpg" itemprop="contentUrl" data-size="1024x1024">
<img src="img/small-thumbnail/1.jpg" itemprop="thumbnail" alt="Image description" />
</a>
<figcaption itemprop="caption description">Image caption 1</figcaption>
</figure>
<figure>
<a href="img/large-image/2.jpg" itemprop="contentUrl" data-size="964x1024">
<img src="img/small-thumbnail/2.jpg" itemprop="thumbnail" alt="Image description" />
</a>
<figcaption itemprop="caption description">Image caption 2</figcaption>
</figure>
<figure>
<a href="img/large-image/3.jpg" data-size="683x683">
<img src="img/small-thumbnail/3.jpg" itemprop="thumbnail" alt="Image description" />
</a>
<figcaption itemprop="caption description">Image caption 3</figcaption>
</figure>
类表示一个片段,这意味着一个片段只能包含一个标签(这也是一个意见)。但是,包括Google在内的示例项目使用的选项卡只包含一个片段,但它并未遵循本书的示例代码。因此,ActionBar.TabListener在MainActivity中有意义。明白了吗? MainActivity可以创建多个选项卡,每个片段一个选项卡。为此,您必须以逻辑方式分离代码。
另一方面,我不了解TheZooList
课程的好处。例如,与SingleFragmentActivity
相比,它似乎没有提供额外的好处。向读者解释Android框架似乎不错,但你用它做什么呢?这本书强迫你发挥创意。
这本书似乎向你展示了许多没有功能的代码。从像SlidingTabsBasic这样的Google示例项目开始。我已经实现了它。它有效,但定制它可能有点困难。但Android GUI框架并不容易。
祝你好运,玩得开心......
答案 2 :(得分:1)
我建议您使用Googles新设计库,这样可以非常轻松地实现标签。要将它包含在您的项目中,您只需在SDK管理器中下载最新的Android支持库,并将此行添加到build.gradle文件中的依赖项compile 'com.android.support:design:22.2.0'
从那里,您可以使用android.support.design.widget.TabLayout
小部件轻松地为您的布局添加标签栏,然后使用其属性来查看/工作您想要的方式。
按照教程中的第3步,在TabLayout下方添加android.support.v4.view.ViewPager
。
按照步骤5创建自己的扩展FragmentPagerAdapter
的适配器。在你的情况下,你将有2个片段,你的动物片段和植物片段。
完成所有这些操作后,将ViewPager链接到TabLayout就像这样简单:
viewPager = (ViewPager) view.findViewById(R.id.view_pager);
viewPager.setAdapter(new ViewPagerAdapter(getFragmentManager()));
tabLayout = (TabLayout) getActivity().findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(viewPager);
您只需获取ViewPager,将其适配器设置为您之前创建的适配器。然后将它们链接在一起,请致电tabLayout.setupWithViewPager(viewPager)
,您应该全部设定。
如果您需要更多信息,本教程可能会更深入地解释我要解释的内容。 http://blog.grafixartist.com/material-design-tabs-with-android-design-support-library/
如果你需要我详细说明,我很乐意。