2014-01-19 17 views
0

截至目前,我有一个待办事项列表样式应用程序,其中有一个edittext和按钮以及顶部,用户通过将输入添加到列表视图中。那么如果用户在列表视图中放置足够的行,listview将会滚动以查看其中的所有项目。唯一的问题是确保屏幕底部的按钮和广告不会随它一起走。如何在ListView入侵其领土时锁定位置

基本上,如何锁定一些视图与上面的滚动功能呢?

这是我的XML的外观是否有帮助:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@drawable/artport"> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    > 

<Button 
    android:layout_alignParentRight="true" 
    android:id="@+id/bAdd" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Add" /> 

<EditText 
    android:id="@+id/myEditText" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/bAdd" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_toLeftOf="@+id/bAdd" 
    android:contentDescription="@string/addItemContentDescription" 
    android:ems="10" 
    android:hint="@string/addItemHint" /> 

</RelativeLayout> 

<ListView 
    android:id="@+id/myListView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    /> 

<RelativeLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_gravity="center">   

<Button 
    android:id="@+id/bClearedList" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/ad" 
    android:text="Completed list" /> 

<com.google.ads.AdView 
    android:id="@+id/ad" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    ads:adSize="BANNER" 
    ads:adUnitId="ca-app-pub-XXXXXXXXXXXXXXXXX/XXXXXXXXXXX" 
    ads:loadAdOnCreate="true" 
    android:layout_alignParentBottom="true"> 
</com.google.ads.AdView> 

</RelativeLayout> 
+0

让你的根布局相对和添加到列表中查看以下内容:机器人:layout_above =“@ + ID/name_of_the_bottom_relative_layout” – Luis

回答

0

根据您的需求,您可以指定ListView控件的高度。 ListView默认是可滚动的。在你的情况下,当你指定“wrap_content”时,它扩展为占用尽可能多的屏幕空间以显示列表,然后(因为LinearLayout采用“最年长的孩子获胜”方法),ListView下面的其余小部件一旦隐藏列表变得足够大。当你指定高度时,即使ListView的内容不足以填充该大小(因此有一些空的空间),ListView仍将占用该大小。

另一种方法是将ListView放在LinearLayout中,然后将另外两个按钮放在另一个LinearLayout中,并指定下层容器的高度,以便始终占据该高度,并通过设置LinearLayout容器的高度将ListView保持为“match_parent”,您可以使其占据剩余空间。

+0

感谢您的解释!玩layout_weight帮助我的问题 – Pythagoras

0

尝试更改ListView的参数。设置layout_weight =“1”,你的ListView将获得剩余的空间。

<ListView 
    android:id="@+id/myListView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    />