【发布时间】:2015-02-11 11:43:40
【问题描述】:
我有一个 Android 布局。我设置了一个像list.setOnItemClickListener 这样的监听器。一切似乎都很好。
在下面一行:
<ScrollView android:layout_width="fill_parent"
android:layout_height="wrap_content">
如果我将 android:layout_height 从 wrap_content 更改为 fill_parent,它将不再起作用(无法选择我列表中的项目)。
仅当它设置为wrap_content 时才有效。为什么会这样?
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView android:id="@+id/restaurants"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<ScrollView android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableLayout android:id="@+id/details"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:shrinkColumns="1"
android:paddingTop="4dip"
>
<TableRow>
<TextView android:text="@string/name" />
<EditText android:id="@+id/name" />
</TableRow>
<TableRow>
<TextView android:text="@string/address" />
<EditText android:id="@+id/addr" />
</TableRow>
<TableRow>
<TextView android:text="Type:" />
<RadioGroup android:id="@+id/types">
<RadioButton android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/take_out"
android:text="@string/takeout"
android:checked="true"
/>
<RadioButton android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/sit_down"
android:text="@string/sitdown"
/>
<RadioButton android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/delivery"
android:text="@string/delivery"
/>
</RadioGroup>
</TableRow>
<TableRow>
<TextView android:text="@string/notes" />
<EditText android:id="@+id/notes" />
</TableRow>
<Button android:id="@+id/save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/save"
/>
</TableLayout>
</ScrollView>
</FrameLayout>
</LinearLayout>
</TabHost>
【问题讨论】:
-
它不会起作用,因为使用
fill_parent会尝试填充FrameLayout内的所有区域,但也存在ListView android:id="@+id/restaurants"。也许解决方案是将ScrollView放在另一个RelativeView中,并将其放在ListView android:id="@+id/restaurants"下方 -
做一个测试:将listView背景颜色改为黑色,将ScrollView背景颜色改为红色。看看你正在使用什么视图。它可以填满listView上方的所有空间。
标签: android onitemclicklistener android-wrap-content