我正在尝试使用2 Fragment
创建一个活动当我在视图中声明片段时,它可以工作。但现在我想动态管理片段:
GalleriesFragment gfs = new GalleriesFragment();
GalleryFragment gf = new GalleryFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(R.id.layout_m,gfs);
ft.add(R.id.layout_m,gf);
ft.commit();
我的布局:
<?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="horizontal"
android:id="@+id/layout_m">
</LinearLayout>
当这样做时,只显示添加的第一个片段,我试图在添加片段时反转它们的顺序......
当我处理布局时,我可以用以下方式设置片段宽度:
android:layout_width="400dp"
现在我有两个问题:
感谢您的帮助!
PS:
GalleriesFragment
没有布局,也没有覆盖onCreateView
,但每行都有一个ArrayAdapter
返回视图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:id="@+id/idimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10sp"
android:layout_marginLeft="10sp"
android:layout_marginTop="10sp"
android:contentDescription="preview"
>
</ImageView>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/texttitre"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5sp"
android:layout_marginRight="7sp"
android:layout_marginTop="10sp"
android:background="@layout/roundcorner"
android:gravity="center"
android:text="Title here" >
</TextView>
<TextView
android:id="@+id/itemdescription"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10sp"
android:layout_marginRight="10sp"
android:text="description" >
</TextView>
</LinearLayout>
</LinearLayout>
GalleryFragment:
<?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" >
<Gallery
android:id="@+id/gallery"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
更新2:
我在onCreateView
课程中添加了GalleriesFragment
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
FrameLayout.LayoutParams lparams = new FrameLayout.LayoutParams(400, LayoutParams.MATCH_PARENT);
container.setLayoutParams(lparams);
return super.onCreateView(inflater, container, savedInstanceState);
}
这会修复第一个片段的宽度,但第二个片段仍未显示...
答案 0 :(得分:1)
如何显示我的2个片段?
您当前的方法将使提供给add
方法的第一个片段占用容器布局的所有空间。一种解决方案是使用一种布局,为添加的两个片段中的每个片段保留空间,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_m"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<FrameLayout
android:id="@+id/frame1"
android:layout_width="100dp"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/frame2"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
然后在代码中:
ft.add(R.id.frame1, gfs);
ft.add(R.id.frame2, gf);
ft.commit();
如何设置第一个片段的宽度(以编程方式?) 第二个填补剩余的宽度?
片段不仅仅是普通视图,但是一种方法是使用单个LinearLayout
布局文件并在LayoutParams
中设置片段视图的onActivityCreated
:
getView().setLayoutParams(new LinearLayout.LayoutParams(100, LinearLayout.LayoutParams.WRAP_CONTENT));
当然这会使你的片段与父容器绑定,我也不知道它在整个片段系统中的效果如何。