首页 文章

Android ListView addFooterView边距/填充问题

提问于
浏览
1

我有一个ListView,它有一个LinearLayout作为其页脚视图,包含一个TextView和一个像这样初始化的ListView:

mylist = (ListView) findViewById(R.id.mylist);
mylistadapter = new MyListAdapter(MainView.this, info);
myfooterlistadapter = new MyListAdapter(MainView.this, info);
LinearLayout footer = (LinearLayout)getLayoutInflater().inflate(R.layout.myfooter, null);
myfooterlist = (ListView) footer.findViewById(R.id.myfooterlist);
mylist.addFooterView(footer, null, false);

mylist 声明为:

<ListView
    android:id="@+id/mylist"
    android:layout_width="fill_parent"
    android:layout_height="0dip" <!-- have also tried fill_parent without weight, same-->
    android:layout_weight="1"
    android:layout_marginLeft="5dip"
    android:layout_marginRight="5dip"
    android:cacheColorHint="#00000000"
    android:dividerHeight="1dip"
    android:drawSelectorOnTop="false" />

页脚(LinearLayout声明为):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/myfooter" >

    <TextView
        android:id="@+id/myfooterlabel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/headermainview"
        android:paddingLeft="2dip"
        android:text="@string/myfootertext"
        android:textColor="@color/black"
        android:textSize="16sp"
        android:textStyle="bold"
        android:visibility="gone" />

    <ListView
        android:id="@+id/myfooterlist"
        android:layout_width="fill_parent"
        android:layout_height="0dip" <!-- have also tried fill_parent without weight, same-->
        android:layout_weight="1"
        android:cacheColorHint="#00000000"
        android:dividerHeight="1dip"
        android:drawSelectorOnTop="false"
        android:visibility="gone"
        android:background="@color/green" />

</LinearLayout>

如果我的页脚列表包含项目,我将TextView和页脚ListView的可见性更改为可见 .

现在,我在页脚列表视图上绘制了背景绿色以查看问题(抱歉隐藏文本但它是机密信息) . 正如您所看到的,我在页脚列表的底部继续获得一些额外的余量 . 我已经尝试从fill_parent更改为wrap_content到0dip,其中weight = 1用于列表和LinearLayout但没有工作 . 正如您所看到的,我没有任何与在页脚列表中的最后一项之后添加额外边距相关的内容 . 顶部列表有20个项目(我滚动到屏幕的底部),我的页脚列表只有1个项目在这种情况下:

Extra margin on bottom of footer list

任何想法发生了什么,以及如何在页脚列表的底部没有这个额外的余量?谢谢!

更新:

经过进一步检查后,似乎无论第二个列表的大小(我添加了更多项目),高度保持不变(绿色框总是相同的大小) . 我在LinearLayout(无重量)和第二个列表上更改为fill_parent高度但仍然具有相同的大小 . ListView不会动态计算页脚的高度,知道它有多大吗?

我正在添加一个新的屏幕截图,以便更详细地向您显示第二个项目被切断(顶部列表没有延伸到覆盖整个第二个列表) .

1st list doesn't stretch to fully cover 2st list

更新2:

经过进一步调查后,如果我将第二个ListView(myfooterlist)的高度设置为特定高度(比如300dip),那么当我滚动到底部时,第一个列表会显示整个第二个列表 . 如果我将它设置为fill_parent或wrap_conent或0dp并添加layout_weight = 1,那么它为我提供了与上面所有图像相同的高度 . 知道动态计算高度会发生什么吗?

1 回答

  • 0

    我不认为你可以在ListView的页脚中嵌入第二个列表,我认为这是你的问题的根源 . 在同一视图(或屏幕)中嵌入多个可滚动视图时,通常会出现问题 .

    将第二个listview移出页脚,我认为它会正确显示 - 我认为你不能将它嵌入你的页脚 .

相关问题