首先,我是android的新手,所以如果我错过了一些基本的东西,我道歉。
我有一个页面,它有两个并排的ListView,两者都有不同的内容。我还在ListViews上面有一个TextView,在listviews下面有另一个TextView。这些文本视图框根据在两个ListView中选择的项目进行更改。
这两个ListView并排放置,每个占据屏幕的一半,而Textview位于正上方和正下方,两者都以页面为中心。图像如下所示。
This is the page looking normal on load.
问题是当我从任一列表中选择一个项目时。我有一种感觉,我缺少一些XML属性,但我不确定哪些属性或甚至是这种情况。当选择一个项目时,让我们从右侧的ListView中说,底部的TextView将使用从数组中获取的文本进行更新。 ListView也决定改变宽度,我不知道为什么这是....我不希望ListView改变宽度。我希望它只占用页面的一半和页面的一半。
This is the page after an item from the right ListView has been selected.
我还想把事情保存在RelativeLayout中。我也相信它只是一个XML问题而不是与适配器或任何其他代码有关,因此我暂时不会包含它。如果需要,我可以加入。
任何帮助都会很棒。提前谢谢。
content_titles.xml 我的活动xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TitlesActivity">
<ListView
android:id="@+id/unlocked_titles_list"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:longClickable="true"
android:layout_below="@+id/current_title"
android:layout_alignEnd="@+id/requirements"
android:layout_marginEnd="26dp"
android:layout_above="@+id/requirements">
</ListView>
<TextView
android:id="@+id/current_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="65dp"
android:text="Current Title: Novice"
android:textSize="24sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<ListView
android:id="@+id/locked_titles_list"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignStart="@+id/requirements"
android:layout_marginStart="28dp"
android:layout_above="@+id/requirements"
android:layout_below="@+id/current_title"/>
<TextView
android:id="@+id/requirements"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="34dp"
android:text="temp"
android:textAlignment="center"
android:textSize="24sp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
activity_listview.xml 用作ListViews的各行
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
android:textSize="16dip"
android:textStyle="bold" >
</TextView>
答案 0 :(得分:4)
布局问题可能是由ScrollView作为包装器引起的
我偶然发现了http://developer.android.com/reference/android/widget/ExpandableListView.html
中的一些说明&#34; ...注意:如果父级的大小也没有严格指定(例如,如果父级的大小不同),则不能将值wrap_content用于XML中的ExpandableListView的android:layout_height属性。 ScrollView你无法指定wrap_content,因为它也可以是任何长度。但是,如果ExpandableListView父级具有特定大小(例如100像素),则可以使用wrap_content。&#34;
我删除了包装ScrollView并且线性布局开始正常工作。现在只知道如何将东西包装到ScrollView。上帝帮助我
但无论如何这是非常奇怪的行为。我认为fill_parent的措辞不是很正确。使用heirarchyviewer工具时,我总是看到layout_width和leayout_height的WRAP_CONTENT和MATCH_PARENT值。所以fill_parent实际上可能意味着match_parent,这让我陷入了认知失调。
答案 1 :(得分:0)
您已将layout_width
属性设置为wrap_content
。这意味着它们可以随着数据的变化而变化。我建议您将ListView
放入LinearLayout
orientation:horizontal
,并设置每个元素占用layout_weight
的空间量。这是一个相关的SO问题What does android:layout_weight mean?