具有可滚动标题部分的Android可滚动结果视图

时间:2013-12-11 19:03:32

标签: android android-layout listview android-linearlayout

我有一个活动,页面的下半部分是可滚动的结果视图。在结果视图的顶部,是一个带有一些文本和一个按钮的relativelayout。此按钮将使新项目显示在此相对布局中以优化搜索。这一部分全部有效。但是,在此相对布局下方,我需要添加搜索结果列表。我使用listview,但由于我需要页面部分的整个底部(包括标题相对布局)可滚动,因为你不能在scrollview中有listview,这不会工作。

所以,我希望我能做一些像制作另一个视图的东西,用每个结果项的结果数据填充它,并以编程方式将它们添加到相对布局下面。也许只是在该标题相对布局下面有一个线性布局。

我是否正确思考这个问题?这样做的正确方法是什么?

如果重要,我的应用程序的最小sdk版本为8.我正在使用支持库。

编辑:这是我目前的代码:

<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"
    tools:context=".DealerFragment" 
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    android:background="@drawable/background">

    <ImageView
        android:id="@+id/topBar" 
        android:background="#000000"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        />

    <ImageView
        android:id="@+id/logoImageView"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:contentDescription="@string/CD_logo"
        android:src="@drawable/logo" />

    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        class="com.google.android.gms.maps.SupportMapFragment" />

    <ScrollView
        android:id="@+id/scrollBox"
        android:layout_width="match_parent"
        android:layout_height="220dp"
        android:layout_alignParentBottom="true"
        android:layout_marginLeft="12dp"
        android:layout_marginRight="12dp"
        android:background="#00000000" >

        <RelativeLayout
            android:id="@+id/scrollViewRelativeLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#00000000">

            <RelativeLayout 
                android:id="@+id/searchHeaderBox"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:background="#c0000000">

                <TextView
                    android:id="@+id/near"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="@string/near"
                    android:textColor="#ffffff" />

                <TextView
                    android:id="@+id/nearZip"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toRightOf="@+id/near"
                    android:layout_marginLeft="4dp"
                    android:layout_centerVertical="true"
                    android:text="78749"
                    android:textColor="#ffffff" />

                <ImageView
                    android:id="@+id/narrowSearchImage"
                    android:layout_width="25dp"
                    android:layout_height="25dp"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:src="@drawable/filter"
                    android:contentDescription="@string/CD_Narrow_Results"/>

                <TextView 
                    android:id="@+id/narrowSearchText"
                    android:layout_toLeftOf="@+id/narrowSearchImage"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:text="@string/narrow_results"
                    android:textColor="#ffffff"/>
            </RelativeLayout>
            <LinearLayout 
                android:id="@+id/resultsLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/searchHeaderBox"
                android:layout_marginTop="1dp"
                android:orientation="vertical"
                android:background="#00000000">
            </LinearLayout>
        </RelativeLayout>
    </ScrollView>
</RelativeLayout>

基本上,我想知道我是否应该尝试添加我的结果项(我目前作为一个单独的.XML文件),如果是,我是如何做到的。或者如果有其他设备我应该用来完成这个。我的目标是让滚动视图中的所有内容都滚动。我不知道在加载页面之前我将拥有多少个结果项。

1 个答案:

答案 0 :(得分:1)

怎么样,我们实际上将 ListView 置于 ScrollView

我知道人们说你做不到,但我找到了办法。


1。使用ListView包含ScrollView的布局。

2。将此内容添加到包含ListView的布局的班级中。确保在设置适配器后放置它。您需要更改的唯一内容是dpListView行布局的高度。

int listViewAdapterSize = yourListView.getAdapter().getCount();
LayoutParams listViewParams = yourListView.getLayoutParams();

final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) ((listViewAdapterSize * dp) * scale + 0.5f);
params.height = pixels;

如果您有任何问题,请告诉我们!