基于项目的Listview高度大于项目高度

时间:2016-01-31 11:34:32

标签: android android-layout

我有一个RelativeLayout活动包含一个列表视图。我想基于其项目制作列表视图高度,我在互联网上搜索并发现许多方法都这样做,但所有方法都使列表视图高度大于项目高度。 我使用的方法如下:

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">
<ScrollView 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">

<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">

<TextView
    android:id="@+id/title"
    android:text="New Recipe"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"/>

<EditText
    android:id="@+id/recipeName"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/title"
    android:hint="Enter Recipe Name"/>

<ListView
    android:id="@+id/ingredientsList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/recipeName"
    android:textColor="#000000"
    android:layout_above="@+id/showIngredientDialog"
    android:minHeight="150px">
</ListView>

<Button
    android:id="@+id/showIngredientDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add Ingredient"
    android:layout_above="@+id/showDirectionDialog"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="145dp" />

<ListView
    android:id="@+id/directionsList"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:layout_above="@+id/showDirectionDialog"
    android:layout_alignParentStart="true"
    android:layout_marginBottom="37dp">
</ListView>

<Button
    android:id="@+id/showDirectionDialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Add Direction"
    android:layout_marginBottom="79dp"
    android:layout_alignParentBottom="true"
    android:layout_alignEnd="@+id/showIngredientDialog" />

<Spinner
    android:id="@+id/timeSpinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/showDirectionDialog"
    android:entries="@array/time"/>

<Spinner
    android:id="@+id/dietarySpinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/dietary"
    android:layout_below="@+id/showDirectionDialog"
    android:layout_toRightOf="@+id/timeSpinner" />

<Spinner
    android:id="@+id/heatSpinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:entries="@array/heat"
    android:layout_below="@+id/showDirectionDialog"
    android:layout_toRightOf="@+id/dietarySpinner" />

<Button
    android:id="@+id/saveRecipe"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save Recipe"
    android:layout_below="@+id/timeSpinner"
    android:layout_alignParentBottom="true"
    android:layout_alignEnd="@+id/showDirectionDialog"
    android:layout_marginBottom="25dp" />


</RelativeLayout>
</ScrollView>
</RelativeLayout>

当我调试方法时如果发现某些项高度等于“45”且某些项高度等于“66”,而列表视图中的所有项目在活动出现时具有相同的高度。

以下是活动的快照,列表视图背景为浅灰色,以显示列表视图高度: Activity snpapshot

1 个答案:

答案 0 :(得分:0)

如果您希望整个列表可见,请不要使用列表视图 列表视图不是为此而制作的,它是为了填充屏幕并重用它的视图

使用带有线性的滚动视图并在里面充气,但这是一个糟糕的方法,需要很长时间 所以请重新审视你这样做的原因也许你会找到一个更好的Widget或者可能分享你想要实现的UI的截图