ListView底部的TextView - api 7

时间:2011-12-23 10:48:13

标签: android xml listview

我正在尝试在Listview之后添加textview(在Listview的底部)。 (API 7)

由于某种原因,它似乎是顶部。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FF0c46a6"
        android:orientation="vertical" android:gravity="center_horizontal">

        <TextView
                android:id="@+id/skypename"
                android:layout_width="0dip"
                        android:layout_height="0dip"
                        android:layout_weight="1"         
                android:textColor="#FFFFFF" android:textSize="12pt"/>
    </LinearLayout>

<ListView android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" />        

</LinearLayout>

4 个答案:

答案 0 :(得分:5)

您正在使用方向垂直的LinearLayout,并且您已在ListView之前定义了TextView。因此,首先在ListView之后绘制TextView。

改为使用RelativeLayout并使用android:layout_alignParentBottom="true"将TextView对齐父级的底部,并使用android:layout_above="@+id/linearLayout1"列表视图,以使列表视图保持在textview的顶部。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FF0c46a6"
        android:orientation="vertical" android:gravity="center_horizontal"
        android:layout_alignParentBottom="true">

        <TextView
                android:id="@+id/skypename"
                android:layout_width="0dip"
                        android:layout_height="0dip"
                        android:layout_weight="1"         
                android:textColor="#FFFFFF" android:textSize="12pt"/>
    </LinearLayout>

<ListView android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false" android:layout_above="@+id/linearLayout1"/>        

</RelativeLayout>

答案 1 :(得分:1)

你可以这样做..

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FF0c46a6"
        android:orientation="vertical" android:gravity="center_horizontal">

        <TextView
                android:id="@+id/skypename"
                android:layout_width="0dip"
                android:layout_height="0dip"
                android:layout_weight="1"         
                android:textColor="#FFFFFF" android:textSize="12pt"/>
    </LinearLayout>

<ListView android:id="@+id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:drawSelectorOnTop="false"
        android:layout_above="@+id/bottom" />   

  <TextView
                android:id="@+id/bottom"
                android:layout_alignParentBottom="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#FFFFFF" 
                android:textSize="12pt"/>

</RelativeLayout>

答案 2 :(得分:1)

我将LinearLayout重新安排到RelativeLayout,但它并不像我想象的那么容易。在我的情况下,我在ListView的上方和下方都有TextView。

为了使ListView不覆盖任何TextView,我必须在包含ListView的布局中使用“layout_below”和“layout_above”。像这样的列表视图布局:

        android:layout_below="@+id/top_layout"
        android:layout_above="@+id/bottom_layout" 

当我从底部TextView写下这个:

android:layout_below="@+id/listview_layout"

列表覆盖了它(=不起作用)。

所以,诀窍似乎是layout_below和layout_above标签的放置。

另一种解决方案(不需要RelativeLayout)是在列表中添加页脚视图。像这样:

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.main_layout, container, false); 
    myItemAdapter = new ItemAdapter(this, com.example.app.R.layout.listitem, theList);
    View footer = inflater.inflate(R.layout.notify_row, null);
    mListView.addFooterView(footer);  
    mListView.setAdapter(myItemAdapter);
    return v;
    }

对于此解决方案,您必须为底部视图创建布局文件。此外,您必须在调用setAdapter之前调用addFooterView。

答案 3 :(得分:-1)

如果您为高度和宽度提供属性为fillparent,那么您将永远不会在listview下面看到textview。

你可以做一件事:将高度提供为固定的dp,然后将你的textview放在列表下面。