我有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>
答案 0 :(得分:0)
fill_parent
(在API级别8及更高级别中已弃用并重命名为MATCH_PARENT
)
将窗口小部件的布局设置为fill_parent将强制它扩展以占用放置在其中的布局元素中可用的空间。它大致相当于设置码头样式Windows窗体控件
Fill
。将顶级布局或控件设置为fill_parent将强制它占据整个屏幕。
<强> wrap_content
强>
将视图的大小设置为wrap_content将强制它扩展到足以包含它包含的值(或子控件)。对于控件 - 如文本框(TextView)或图像(ImageView) - 这将包装正在显示的文本或图像。对于布局元素,它将调整布局大小以适合作为其子项添加的控件/布局。
Android代码文档here中有一些详细信息。
答案 1 :(得分:0)
您的ScrollView占据了ListView中可以填充在屏幕上的所有可用空间,基本上可以覆盖它。
你永远不应该使用带有ListView的ScrollView,因为ListView负责自己的垂直滚动。最重要的是,这样做会使ListView中的所有重要优化都无法处理大型列表,因为它有效地强制ListView显示其整个项目列表以填充ScrollView提供的无限容器。 - 来自http://developer.android.com/reference/android/widget/ScrollView.html