使用SherlockActionBar我创建了一个很好的界面。在横向模式中,您会看到listfragment和“detailsfragment”。
现在我想在详细信息框架中添加一个viewpageindicator(https://github.com/JakeWharton/Android-ViewPagerIndicator),所以我看起来像这样:
--------------------------|
|_1___|TAB1 | TAB2 | ETC |
|_2___|-------------------|
|_3___|Example: content |
|_4___| TAB1 of listitem 1|
|_5___|___________________|
我希望这很清楚。所以基本上我会在片段内部使用FragmentManager / TabPageIndicator。
我有可能吗?我无法理解...... :(
谢谢!
答案 0 :(得分:6)
您不应将Fragment
放在Fragment
内。但是,您可以在片段中放置ViewPager
并获得您正在寻找的结果。
前一段时间我的一个应用程序遇到了同样的问题(只有我希望ViewPager
包含一些ListView
s)。这是最终结果(请参阅行;红色包含Fragment
,蓝色ViewPagerIndicator
,绿色ViewPager
):
我通过以下步骤完成了这项工作。 Fist,对于细节片段,我创建了以下XML文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.viewpagerindicator.TabPageIndicator
android:id="@+id/viewpagerIndicator"
android:layout_height="wrap_content"
android:layout_width="match_parent" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
然后,我设置了一个自定义的PagerAdapter来填充ViewPager和TabPageIndicator:
public class MainPagerAdapter extends PagerAdapter implements TitleProvider {
// constructor
...
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// remove the object (we don't want to keep it in memory as it will get recreated and cached when needed)
ViewPager viewPager = (ViewPager) container;
View view = (View) object;
viewPager.removeView(view);
}
@Override
public Object instantiateItem(View pager, final int position) {
// inflate your 'content'-views here (in my case I added a listview here)
// similar to a listadapter's `getView()`-method
View wrapper = ... // inflate your layout
... // fill your data to the appropriate views
((ViewPager) pager).addView(wrapper);
}
public String getTitle(int position) {
... // return the title of the tab
}
}
接下来,在我的片段中,我设置了以下内容:
public class MainFragment extends Fragment {
private MainPagerAdapter pagerAdapter;
private TabPageIndicator mIndicator;
private ViewPager viewPager;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View detailsFrame = context.findViewById(R.id.details_fragment);
// setup your adapter: pass data, etc.
this.pagerAdapter = new MainPagerAdapter(...);
this.viewPager = (ViewPager) context.findViewById(R.id.viewpager);
viewPager.setAdapter(pagerAdapter);
this.mIndicator = (TabPageIndicator) context.findViewById(R.id.viewpagerIndicator);
this.mIndicator.setViewPager(viewPager);
}
}
答案 1 :(得分:0)
您无法在片段内嵌入片段。它将显示正常,但是当您想要使用事务替换其中一些时它会崩溃。
看看这些: