我的Android ListView的高度出了什么问题?

时间:2016-09-05 05:35:21

标签: android android-layout listview android-linearlayout

我正在尝试使用按钮实现布局,屏幕顶部为EditTextButtton,底部为TextViewListView它垂直填满了它们后面的空间。昨晚我对这个或多或少是正确的,除了使用ListView的绝对高度,只是为了测试应用程序的处理。

我不知道自从我关闭Android Studio之后发生了什么,现在打开它,也许是魔术,也许是Git回购的东西,或者是我的无意识改变,但现在是ListView似乎从显示器向下无限延伸,如图中的橙色轮廓所示:

enter image description here

我尝试了各种layout_height值,上面的图片为50dp。即使低至10dp没有任何区别,并且尝试通过在顶部蓝色锚线上使用鼠标将其拖得更小没有任何区别。

这里有什么问题,我应该在哪里尝试解决这个问题?

以下是布局的XML,其中包含所有破碎的荣耀:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_centerHorizontal="true"
    tools:context="com.bradykelly.heavyweights.MainActivity"
    android:weightSum="1">
<TextView
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:text="@string/adjustment_label"
        android:id="@+id/scale_text_view_label"
        android:background="@color/colorPrimaryDark"
        android:textColor="@color/textColorPrimary"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:textAlignment="center"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_weight="0.09"
        android:height="10dp"/>
<EditText
        android:id="@+id/editText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/text_view_border"
        android:layout_marginTop="5dp"
        android:ems="10"
        android:inputType="text"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:enabled="true"
        android:focusable="true"/>
<Button
        android:id="@+id/processButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="5dp"
        android:text="@string/process_file_text" />
<ListView
        android:cacheColorHint="#00000000"
        android:scrollbars="none"
        android:fadingEdge="vertical"
        android:soundEffectsEnabled="true"
        android:dividerHeight="1dp"
        android:padding="5dp"
        android:smoothScrollbar="true"
        android:layout_weight="50"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:drawSelectorOnTop="false"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="5dp"
        />
<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:background="@drawable/text_view_border"
        android:layout_marginLeft="20dp"
        android:textAlignment="center"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="-20dp"
        />
</LinearLayout>

3 个答案:

答案 0 :(得分:3)

  

我使用layout_weight属性对您的布局进行了一些更改。将xml代码下方应用到Layout。使用layout下面的List view可以显示我在screen shot附加的屏幕List view height=50

     

因为您已经提供了weight并且您已经提供You not need to define height when you are using weight property in your layout因此会导致问题。

     

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerHorizontal="true" android:orientation="vertical" android:weightSum="10"> <TextView android:id="@+id/scale_text_view_label" android:layout_width="match_parent" android:layout_height="0dp" android:layout_gravity="center_horizontal" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="20dp" android:layout_weight="1" android:background="@color/colorPrimaryDark" android:gravity="center" android:text="Adjustment Label" android:textAlignment="center" android:textColor="#FFFFFF" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/editText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="5dp" android:ems="10" android:enabled="true" android:focusable="true" android:inputType="text" /> <Button android:id="@+id/processButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="5dp" android:text="Process" /> <ListView android:id="@+id/ListView" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_marginBottom="10dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="5dp" android:layout_weight="8" android:cacheColorHint="#00000000" android:dividerHeight="1dp" android:drawSelectorOnTop="false" android:fadingEdge="vertical" android:padding="5dp" android:scrollbars="none" android:smoothScrollbar="true" android:soundEffectsEnabled="true" /> <TextView android:id="@+id/textView3" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_marginBottom="-20dp" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_weight="1" android:gravity="center" android:text="Testeing" android:textAlignment="center" android:textSize="20sp" android:textStyle="bold" /> </LinearLayout>

IEqualityComparer<T>

enter image description here

答案 1 :(得分:1)

您正在使用

android:layout_weight="50"

对于listview,但线性布局中的权重和为1。这就是listview的问题。

像这样使用

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="10">

<Textview
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>

<EditText
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>

<Button
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>

<ListView
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="6"/>

<TextView
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>
</LinearLayout>

体重计数应与体重总和相匹配。父布局应为fillparent,并为所有子布局设置高度为0dp。

答案 2 :(得分:0)

我仅在layout_weight中使用ListView。检查一下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_centerHorizontal="true"
    android:weightSum="1">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="test"
        android:id="@+id/scale_text_view_label"
        android:background="@color/colorPrimaryDark"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:textAlignment="center"
        android:gravity="center"
        android:textSize="20sp"
        android:textStyle="bold"/>
    <EditText
        android:id="@+id/editText"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:ems="10"
        android:inputType="text"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:enabled="true"
        android:focusable="true"/>
    <Button
        android:id="@+id/processButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="5dp"
        android:text="test" />
    <ListView
        android:cacheColorHint="#00000000"
        android:scrollbars="none"
        android:fadingEdge="vertical"
        android:soundEffectsEnabled="true"
        android:dividerHeight="1dp"
        android:padding="5dp"
        android:smoothScrollbar="true"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:drawSelectorOnTop="false"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginBottom="10dp"
        android:layout_marginTop="5dp"
        />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/textView3"
        android:layout_marginLeft="20dp"
        android:textAlignment="center"
        android:gravity="center"
        android:text="Test"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_marginRight="20dp"
        />
</LinearLayout>