在同一个 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"
我已经搜索了一个小时,我知道这个问题已经有几个问题,但是这些都没有解决我的问题,而且解决方案太旧了。
我正在开发一个活动应用程序,它会显示参加活动的人的出席情况。它需要有两个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"