当列表填满屏幕时,列表下面的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>

我做错了什么?即使向下滚动,我也希望能够看到ImageButton。

【问题讨论】:

修复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 填满整个高度

悬停列表项时菜单消失

在我的 android 应用程序中滚动列表视图时,数据正在消失。我在片段中使用列表视图

WPF TreeView保持屏幕上可见的元素列表

当我向下滚动时,列表视图项目标记在列表下方

我的列表大小是整个屏幕,看不到下面的按钮或滚动