一般来说,我正在尝试重新制作此布局:
这个想法是你有父类别(每个列表中的顶部项目),然后是它的子类别列表。我从服务器上获得这些信息,所以我不能做任何事情。没有任何布局在代码中被修改,目前我只是想让布局工作,然后我将它连接到实际数据。 片段布局:
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.<redacted>.app.EditCategoriesActivity.EditCategoriesFragment">
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="@dimen/edit_categories_list_width"
android:id="@+id/edit_categories_grid"
android:gravity="center_horizontal"
android:numColumns="auto_fit"
android:stretchMode="spacingWidthUniform"/>
</RelativeLayout>
GridView项目视图布局:
<?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"
android:background="@drawable/border_box"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Test Cat"
android:layout_weight="1"
android:id="@+id/edit_categories_grid_item_parent_name"
android:layout_margin="10dp"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:paddingEnd="30dp"
android:paddingRight="30dp"
android:id="@+id/edit_categories_grid_item_parent_switch"/>
</LinearLayout>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:minHeight="?android:attr/listPreferredItemHeightLarge"
android:layout_below="@id/edit_categories_grid_item_parent_name"
android:id="@+id/edit_categories_grid_item_list"
android:layout_margin="10dp"
android:paddingStart="30dp"
android:paddingLeft="30dp"
android:clickable="true"
android:choiceMode="singleChoice"
/>
</LinearLayout>
ListView项目布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:layout_gravity="center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:text="Child"
android:id="@+id/edit_categories_list_item_title"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:gravity="center_vertical|end"
android:id="@+id/edit_categories_list_item_switch"/>
</RelativeLayout>
目前它看起来像这样:
测试数据的结构是:
测试1&GT;
测试儿童猫
测试儿童猫2
-
的Test2&GT;
TestChild Cat -2
TestChild Cat 2 -2
TestChild Cat 3 -2
TestChild Cat 4 -2
TestChild Cat 5 -2
TestChild Cat 6 -2
TestChild Cat 7 -2
TestChild Cat 8 -2
- 此外,列表视图非常难以滚动...我的意思是我试图在#34;点击区域滚动它们&#34;在我的测试中已经超过一百次而且只有1次(如果重要的话,测试2一次)滚动一次......是的...
理想情况下,所有列表项都会显示,并且gridview项目中不会滚动,只有gridview本身。
如果有任何我认为有帮助的信息,请告诉我。就像我说的那样,我基本上只是将数据绑定到代码中的视图中,所以我可以看到它会如何影响布局......除了数据本身的结构之外,你知道。 &GT;&GT;
无论如何,谢谢你的时间!
答案 0 :(得分:1)
最后得到的几乎就是我设想的方式!
我首次尝试更改是删除列表视图并将其替换为LinearLayouts
垂直方向,然后循环覆盖数据以填充它并为数据的所有视图充气。这种方式有效,但GridView
的“单元格”会相互重叠,并在滚动时重新定位......不用说这不太理想。
然后我再次看了GridLayout
并决定尝试填充它基本上与LinearLayouts
相同,它几乎完美地工作!把它扔进ScrollView
,它正在工作!现在单元格没有按照我想要的方式排列,我必须为不同的设备提供多个布局文件,因为它没有列的auto-fit
选项,但总体而言我很满意结果!此外,另一个明显的缺点是,它不再被回收,但我知道我不会有大量的数据,并且有0个图像加载所以我很幸运,因为我没有得到它。希望这有助于其他人!
P.S。一旦RecycleView完全释放并且稳定,它可能就是这样,如果你还没有看过,那就做! ^ _ ^