获取ListView以“滚动过去”它上方的RelativeLayout?

时间:2013-12-03 08:45:23

标签: android xml android-layout listview android-listview

我不确定如何说出我的问题,但标题有点解释。我首先要说的是我对Android应用程序编程很陌生。

我的MainActivity包含一个包含EditText和Button的RelativeLayout,以及一个带有一堆TextView和一些ImageView的ListView。现在我已经设法将我的搜索栏和按钮放在我的ListView上方,但是我希望搜索栏不会一直放在顶部。我喜欢这样,当我滚动我的ListView(显示一堆帖子,如Twitter提要)。有谁知道这是否有可能实现,如果是这样 - 如何?

我将粘贴我的activity_main.xml,我的ListView的xml文件非常长,实际上只是一堆TextViews等。 (可以根据要求发帖)

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <RelativeLayout
        android:id="@+id/main_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:padding="3dp"
        android:background="#cecece" >  

        <EditText
            android:id="@+id/search_field"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:hint="@string/search_field" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignRight="@id/search_field"
            android:layout_centerVertical="true"
            android:height="10dp"
            android:textSize="15dp"
            android:background="#bcbaba"
            android:text="@string/search_button"    
            android:onClick="searchQuery" />

    </RelativeLayout>   

    <ListView 
        android:id="@+id/dataListView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/main_header" 
        android:paddingTop="30dp" />

</RelativeLayout>

先谢谢,克里斯蒂娜:)

1 个答案:

答案 0 :(得分:0)

我不知道RelativeLayout本身会实现此功能的任何功能,但您可以尝试以编程方式将EditText上的可见性设置为: .setVisibility(View.GONE)将完全“删除”它,这意味着它所占用的空间将是免费的,或者只是setVisibility(View.INVISIBLE)这将使其无形但将保留其空间。要知道何时在EditText上拨打此电话,您可以为onScroll使用ListView听众。

@Override
public void onScroll(AbsListView absListView, int firstVisible, int visibleCount, int totalCount) { 
//firstvisible is your first visible item in the list
}

要确定您的ListView是否位于顶部,您可以使用上方的firstVisiblegetFirstVisiblePosition()并决定让您EditText可见。

希望这有助于让您走上正确的轨道,但我还没有真正测试过它。