我有一个垂直的LinearLayout,它有一个列表视图,底部有一个ImageView,顶部有一个,列表视图填满了留下的空间。
看起来像这样:
<LinearLayout layout_height="match_parent" layout_width="@dimen/width"
orientation="vertical">
<ImageView layout_height="@dimen/width" layout_width="@dimen/width" id="@+id/top">
<ListView android:layout_height="0px"
android:background="#00ffff"
android:layout_width="@dimen/width"
android:layout_weight="1" />
<ImageView layout_height="@dimen/width" layout_width="@dimen/width" id="@+id/bottom" layout_gravity="bottom|center_horizontal">
每当我看到列表视图时,它都能正常工作。
但每当我将ListView设置为可见性消失时,“底部”ImageView将弹出显示在顶部图像视图下方。
我的问题是为什么底部的ImageView不会停留在底部尽管我说'android:layout_gravity =“bottom | center_horizontal”'我看过hierarchyViewer,父级的高度确实与屏幕的高度相匹配。所以底部的图像视图应该尊重android:layout_gravity =“bottom | center_horizontal”并保持在底部,对吧?
答案 0 :(得分:3)
作为我的评论的替代方案,您可以将LinearLayout
替换为RelativeLayout
。 Agarwal已经提出了这个建议,但是他的代码有点混乱,而且在撰写本文时你的想法并不正确。
尝试下面的代码。将ListView
设置为gone
时,顶部和底部图像将保持与visible
时的位置相同。请注意,我替换了@dimens/width
引用,因此您可能希望将这些引用放回去。
<?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">
<ImageView android:id="@+id/top" android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<ListView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_above="@+id/bottom"
android:layout_below="@+id/top" android:background="#00ffff" />
<ImageView android:id="@+id/bottom" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
答案 1 :(得分:0)
最好的解决方案是使用ralaticelayout来实现这个::::
<?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:background="#0000FF">
<ImageView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/top" />
<ImageView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/bottom" android:layout_alignParentBottom="true"/>
<ListView android:layout_height="fill_parent"
android:background="#00ffff"
android:layout_width="fill_parent"
android:layout_below:@id/top android:layout_above:@id/bottom />
</RelativeLayout>