gpt4 book ai didi

android - 仅显示第一个 fragment

转载 作者:太空狗 更新时间:2023-10-29 13:33:52 25 4
gpt4 key购买 nike

我正在尝试使用 2 个 fragment 创建一个 Activity

  • 第一个 fragment 使用 LisFragment 显示画廊列表
  • 第二个 fragment 显示第一个 fragment 中选择的画廊的预览图像

当我在 View 中声明 fragment 时它起作用了。但现在我想动态管理 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>

这样做时只显示第一个添加的 fragment ,我试图在添加 fragment 时颠倒它们的顺序......

当我在布局上工作时,我可以设置我的 fragment 宽度:

android:layout_width="400dp"

现在我有两个问题:

  1. 如何让我的 2 个 fragment 显示?
  2. 如何设置第一个 fragment 和第二个 fragment 的宽度(以编程方式?)以填充剩余宽度?

感谢您的帮助!

附言:

GalleriesFragment 没有布局,也没有覆盖 onCreateView,但是有一个 ArrayAdapter 为每一行返回这样的 View :

<?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>

图库 fragment :

<?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:

我在我的 GalleriesFragment 类中添加了一个 onCreateView :

@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);
}

这修复了第一个 fragment 的宽度,但第二个 fragment 仍然没有显示...

最佳答案

How can I make my 2 fragments to display ?

您当前的方法将使提供给 add 方法的第一个 fragment 占据容器布局的所有空间。一种解决方案是使用为添加的两个 fragment 中的每一个保留空间的布局,如下所示:

<?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();

How can I set the width (programmatically ?)of the 1st fragment and the second to fill the remaining width?

fragment 不仅仅是普通的 View ,一种方法是使用单个 LinearLayout 布局文件,并在 onActivityCreated 中设置 fragment View 的 LayoutParams :

getView().setLayoutParams(new LinearLayout.LayoutParams(100, LinearLayout.LayoutParams.WRAP_CONTENT));

当然这会让你的 fragment 绑定(bind)到父容器,我也不知道这在整个 fragment 系统中的效果如何。

关于android - 仅显示第一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com