我正在尝试使用android 2.2 - 4.0上的标签。我已将this demo:http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabs.html扩展为:
TabSpec ts = mTabHost.newTabSpec("randomTab");
Intent intent = new Intent();
intent.setClass(this, FragActiv.class);
ts.setContent(intent);
ts.setIndicator("randomTab");
mTabManager.addTab(ts, FragActiv.class, new Bundle());
但我不知道要添加到 onTabChanged 的内容,其中所有的魔法都发生在演示中。
我需要做的是:
我有一个ListFragment
,当点击一个项目时,它应该在小屏幕/纵向方向的单独屏幕上显示详细信息,或者在大屏幕/横向方向上显示< / em>,在同一屏幕上显示包含详细信息的片段。我可以使用Fragments解决这个问题,还是应该尝试让FragmentActivities
正常工作?
通过以下示例:example,我能够实例化 FragmentActivity ,但它占据了整个屏幕,而不仅仅是标签菜单下的区域。
是否有机会使用活动(或FragmentActivities)而不是片段作为标签的内容?
答案 0 :(得分:0)
没有必要做我想要的(使用TabActivity作为标签的内容)。我通过tabContent中有两个容器解决了这个问题,一个用于ListView片段,一个用于细节片段。现在是我的布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</HorizontalScrollView>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:fadingEdge="none" >
<FrameLayout
android:id="@+android:id/realtabcontent"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_weight="1" />
<FrameLayout
android:id="@+android:id/details_container"
android:layout_width="0px"
android:layout_height="fill_parent"
android:layout_weight="1"
android:visibility="gone" />
</LinearLayout>
</LinearLayout>
最初, details_container 为GONE。您可以按如下方式使用它:
ft.replace(R.id.details_container, detailsFragment);
FrameLayout detailsLayout = (FrameLayout) mActivity.findViewById(R.id.details_container);
detailsLayout.setVisibility(View.VISIBLE);