在同一个 scrollable 中添加多个 GridView layout/fragment

Add multiple GridView in the same scrollable layout/fragment

我已经搜索了一个小时,我知道这个问题已经有几个问题,但是这些都没有解决我的问题,而且解决方案太旧了。

我正在开发一个活动应用程序,它会显示参加活动的人的出席情况。它需要有两个GridView: YES 和NO,根据出席情况,显示客人的照片。

我已经制作了 "YES" GridView,我尝试将新的 TextView 和 GridView 添加到我的布局中 + 在 Java 中为我的 "NO" GridView 但它只显示第一个。

我做错了什么?我为我的每个选项卡使用片段。

这就是我的v.s。我想要什么:

这是我片段的布局:

[fragment_one.xml]

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.example.MainActivity.OneFragment">

<TextView android:id="@+id/title_yes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="14dp"
android:text="Yes"
android:textAllCaps="true"
android:textSize="14sp"
android:fontFamily="sans-serif-regular" />

<GridView android:id="@+id/gridview_yes"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/title_yes"
    android:numColumns="4"
    android:verticalSpacing="2dp"
    android:horizontalSpacing="2dp"
    android:stretchMode="columnWidth"
    android:gravity="center" />

<TextView android:id="@+id/title_no"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="14dp"
    android:text="No"
    android:textAllCaps="true"
    android:textSize="14sp"
    android:fontFamily="sans-serif-regular" />

<GridView android:id="@+id/gridview_no"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/title_no"
    android:numColumns="4"
    android:verticalSpacing="2dp"
    android:horizontalSpacing="2dp"
    android:stretchMode="columnWidth"
    android:gravity="center" />

</LinearLayout>

这是我的片段 Java:

public class OneFragment extends Fragment {

    public OneFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_one, container, false);
        GridView gridViewYes = (GridView) view.findViewById(R.id.gridview_yes);
        GridView gridViewNo = (GridView) view.findViewById(R.id.gridview_no);
        gridViewYes.setAdapter(new ImageAdapter(view.getContext())); // uses the view to get the context instead of getActivity()
        gridViewNo.setAdapter(new ImageAdapter(view.getContext())); // uses the view to get the context instead of getActivity()

    gridViewYes.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
            Toast.makeText(getActivity(), "Esta es la imagen " + position + ".", Toast.LENGTH_SHORT).show();
        }
    });

    return view;
    }

}

GridView 可能不是您的最佳选择。当您有一个可能很长的列表要在滚动容器中显示时,可以使用该小部件。当您有一组不需要自己滚动行为的可管理项目时,TableView 会更好。

另外,对于这些东西,您可能不想要 layout_height 或 match_parent。使用 wrap_content 仅让它们与内容建议的一样高。

如果您因为不确定整个高度而需要滚动整个内容,请将 LinearLayout 放在 ScrollView 中,并让它确定表格和文本的集合是否应该滚动(如果它们太高)对于分配的space。

您的问题是您已将 GridView yes 高度设置为 match_parent。

android:layout_height="match_parent"

您应该更改如下:

android:layout_height="wrap_content"