我有一个活动,页面的下半部分是可滚动的结果视图。在结果视图的顶部,是一个带有一些文本和一个按钮的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文件),如果是,我是如何做到的。或者如果有其他设备我应该用来完成这个。我的目标是让滚动视图中的所有内容都滚动。我不知道在加载页面之前我将拥有多少个结果项。
答案 0 :(得分:1)
怎么样,我们实际上将 ListView
置于 ScrollView
!
我知道人们说你做不到,但我找到了办法。
1。使用ListView
包含ScrollView
的布局。
2。将此内容添加到包含ListView
的布局的班级中。确保在设置适配器后放置它。您需要更改的唯一内容是dp
到ListView
行布局的高度。
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;
如果您有任何问题,请告诉我们!