【发布时间】:2016-03-02 16:44:29
【问题描述】:
我想要一个左侧的垂直 ListView 和右侧的 GridView。两者都由 ArrayAdapters 支持。我试过RelativeLayout和LinearLayout,GridView甚至不调用Adapter(除非垂直堆叠)。我在带有父 ID 的适配器中放了一个 Log.v 来证明它。使用 TableLayout 网格的适配器确实设置了字段,但网格仍然不可见。这两个视图确实在其中显示了相同的 TextView 项。片段的其余部分显示正常。 ListView 始终显示。
使用 TableLayout 的 XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_course"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.hubbardsoftware.racetac.CourseActivityFragment"
tools:showIn="@layout/activity_course">
<fragment android:name="com.hubbardsoftware.racetac.TimerFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:layout="@layout/fragment_timer" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff000000"
android:textStyle="bold"
android:text="@string/course"/>
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TableRow>
<ListView
android:id="@+id/listview_course"
android:layout_column="1"
/>
<GridView
android:id="@+id/gridview_course"
android:layout_column="2"
android:numColumns="auto_fit"
android:stretchMode="none" />
</TableRow>
</TableLayout>
以及片段代码:
// Setup the List of Marks in the course.
ArrayList<Mark> course = appData.getCourse();
ArrayList<Mark> marks = appData.getMarks();
Log.v(LOG_TAG, "Adapters: "+course.size()+" "+marks.size());
courseAdapter = new CourseAdapter(getActivity(), R.id.listview_course, R.layout.list_item_mark_name, course);
ListView listView = (ListView) rootView.findViewById(R.id.listview_course);
listView.setAdapter(courseAdapter);
// Setup the grid of Marks to choose from
marksAdapter = new CourseAdapter(getActivity(), R.id.gridview_course, R.layout.list_item_mark_name, marks);
GridView gridView = (GridView) rootView.findViewById(R.id.gridview_course);
gridView.setAdapter(marksAdapter);
还有那个 list_item_mark_name 的布局:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item_mark_name_name"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:fontFamily="Roboto"
android:textStyle="bold"
android:textColor="#ff000000"
android:text="name"
/>
我可以让它们垂直堆叠,甚至可以让它们在同一个空间中相互叠加,但并排没有乐趣。我在权重、相对定位(toRightOf 等)方面玩过很多次,但没有成功。
我也只是尝试为 Grid 提供它自己的适配器,并以不同的名称为 Grid 创建另一个 TextView,但无济于事。
想法?谢谢!
【问题讨论】:
标签: android android-layout listview gridview