Android布局 - listview和edittext视图重叠

时间:2013-05-11 20:20:50

标签: android android-layout android-listview

在我的应用程序中,我在ListView上有一个带有EditText视图的活动。我遇到的一个简单问题是列表的最顶层元素是在EditText视图的“下面”。

我在Android方面不是很有经验,所以我不知道如何解决这个问题!

enter image description here

我的xml看起来像这样

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".AcceptDeliveriesMainActivity"  >

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >

    <!-- Editext for Search -->
    <EditText android:id="@+id/inputSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="@string/search_field_text"
        android:inputType="textVisiblePassword"/>
</LinearLayout>

<!-- List View -->
<ListView
    android:id="@+id/list_view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

</RelativeLayout>

3 个答案:

答案 0 :(得分:3)

只要你的linearlayout只包含一个元素,就可以删除它。

您必须在列表视图中使用android:layout_below="@+id/inputSearch"

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".AcceptDeliveriesMainActivity"  >


        <EditText
            android:id="@+id/inputSearch"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textVisiblePassword" />


    <!-- List View -->

    <ListView
        android:id="@+id/list_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/inputSearch" />

</RelativeLayout>

如果您不想删除linearlayout

你可以用这个:

<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".AcceptDeliveriesMainActivity"  >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/llID"
        android:orientation="horizontal" >

        <!-- Editext for Search -->

        <EditText
            android:id="@+id/inputSearch"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:inputType="textVisiblePassword" />
    </LinearLayout>

    <!-- List View -->

    <ListView
        android:id="@+id/list_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/llID" />

</RelativeLayout>

在前面的代码中,我刚给了linearlayout一个ID并在它下面创建了listview

答案 1 :(得分:1)

你应该用LinearLayout替换你的父RelativeLayout。或者将子视图相对于彼此放置,比如android:layout_below,然后将子项相互对齐。否则,每个孩子将对齐父母的左上角。

答案 2 :(得分:0)

将您的第二个ListView告诉layout:below您的LinearLayout。