当列表填满屏幕时,列表下面的android元素消失了
Posted
技术标签:
【中文标题】当列表填满屏幕时,列表下面的android元素消失了【英文标题】:android element below list is gone when the list fills the screen 【发布时间】:2011-10-13 07:57:45 【问题描述】:我有一个LinearLayhout
,其中包含一个listView,下面是一个ImageButton
。
当我向列表中添加项目时,imageButton
越来越低,这是我想要的,但是当列表中有很多元素时,列表足够大以填满屏幕,我可以向下滚动到列表的底部,但没有更多,这意味着我再也看不到imageButton
。
代码:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/add_interest_layout_root"
android:orientation="vertical"
android:layout_
android:background="@color/back"
android:layout_>
<ListView android:id="@android:id/list"
android:layout_
android:divider="@drawable/downa"
android:footerDividersEnabled="false"
android:cacheColorHint="@android:color/transparent"
android:layout_gravity="center"
android:layout_marginTop="6dp"
android:layout_>
</ListView>
<LinearLayout
android:layout_
android:layout_
android:id="@+id/linearLayout2"
android:gravity="center">
<LinearLayout
android:orientation="vertical"
android:gravity="center_horizontal"
android:layout_
android:layout_
android:id="@+id/LinearLayout16">
<ImageButton
android:src="@drawable/add"
android:id="@+id/btn_interest_more"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:background="@android:color/transparent"></ImageButton>
<TextView
android:layout_
android:textColor="@android:color/white"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_
android:id="@+id/TextView08"
android:text="be more\nspecific"
android:gravity="center"></TextView>
</LinearLayout>
</LinearLayout>
我做错了什么?即使向下滚动,我也希望能够看到ImageButto
n。
【问题讨论】:
修复listview高度试试,例如:android:layout_ 永远不要在 Android 中为视图添加绝对大小。以上建议不正确。 【参考方案1】:你应该这样做。请注意,这是一个伪代码,因此您最好填写正确的属性。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/add_interest_layout_root"
android:layout_
android:background="@color/back" android:layout_>
<LinearLayout android:layout_
android:layout_ android:id="@+id/linearLayout2"
android:gravity="center" android:layout_alignParentBottom="true">
<!-- LinearLayout elements same as above -->
</LinearLayout>
<ListView android:id="@android:id/list"
android:layout_above="@+id/linearLayout2"
android:layout_
android:divider="@drawable/downa"
android:footerDividersEnabled="false"
android:cacheColorHint="@android:color/transparent"
android:layout_gravity="center"
android:layout_marginTop="6dp" android:layout_>
</ListView>
</RelativeLayout>
【讨论】:
感谢 PravinCG,您的解决方案奏效了!我最终使用了 View footerView = getLayoutInflater().inflate(R.layout.add, null, false); getListView().addFooterView(footerView);因为我希望列表具有 android:layout_ (因为当它位于“wrap_content”时,我的 ListAdapter 的 getView 被调用了两次......)。因此,一方面为了让 match_parent 将列表下方的项目缝合到列表中,另一方面,我添加了此项目作为列表中的最后一个元素作为其页脚。【参考方案2】:这正是您的问题的解决方案:http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/ 可以通过在您的列表视图上设置 fillviewport 来解决。
【讨论】:
【参考方案3】:将此添加到包含 ImageButton 的 LinearLayout
android:layout_alignParentBottom="true"
更新:
忘记上面的代码。我误会你了。对不起。
改为:将此布局添加为您的根布局
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/scroll"
android:scrollbars="none"
android:layout_weight="1">
<!-- Your code -->
</ScrollView>
【讨论】:
该属性可用于RelativeLayout,正如我在回答中发布的那样。 LinearLayout 没有它,直接忽略它。以上是关于当列表填满屏幕时,列表下面的android元素消失了的主要内容,如果未能解决你的问题,请参考以下文章
RelativeLayout 中的 ListView 填满整个高度