android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/list_items"></ListView>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/recycler">
</android.support.v7.widget.RecyclerView>
我需要在一个活动中添加listview和recycler视图,但是在此我只是获取listview项。回收者视图项目未显示。
新XML
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:id="@+id/list_items">
</ListView>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:id="@+id/recycler">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</ScrollView>
它在屏幕的1/4中显示列表视图,在屏幕的其余部分显示recyclerview。 我希望listview的所有项目都将随着listview的recyclerview项目开始显示而显示。
答案 0 :(得分:2)
Android设计的一个好功能是线性布局中的 Weight_sum 属性。在您上面的代码中进行如下所示的更改,...
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="2">
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
按照上面的代码,可以在父布局中添加权重总和,并按照您希望划分布局的方式添加权重。通过编辑上面的代码进行检查,如..
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="3">
<ListView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2" />
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
您将了解一些减肥药的功效! 可能的答案可以帮助您!
答案 1 :(得分:0)
首选方法是使用单个RecyclerView,使其适配器处理ListView和RecyclerView的两种视图类型,但是如果您坚持要同时使用ListView和RecyclerView,则可以使用此ListView子类
public class WrapListView extends ListView {
public WrapListView(Context context) {
super(context);
}
public WrapListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 1, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
RecyclerView开箱即用地支持wrap_content,您只需调用recyclerView.setNestedScrollingEnabled(false);
即可使滚动平滑
这样做将使ListView和RecyclerView的回收机制都无效,因为两个视图的高度都被拉伸到了全长,并且没有任何项目视图被重复使用/回收。