我想向用户显示一个可滚动的项目列表,每个项目都有不同数量的“子视图”。例如:
我的第一个想法是创建一个RecyclerView,它会为每个包含自己的RecyclerView的“项目”充气:
档案:
<LinearLayout
android:id="@+id/item">
<TextView
android:id="@+id/itemTitle" />
<android.support.v7.widget.RecyclerView
android:id="@+id/nestedRecyclerView"/>
</LinearLayout>
我遇到的问题是 main RecyclerView不知道嵌套的大小,因此只显示它上面的TextView,因为它认为嵌套列表的高度为零。
通过设置固定布局:高度到嵌套列表可以稍微修正一下,但如示例图片的第3项所示,高度可能会根据项目数量而变化。
这是创建此类布局的首选方式吗?如果是,我该如何解决“高度”问题?如果没有,那么最好的方法是什么?
答案 0 :(得分:0)
可以通过为列表适配器的布局添加gridview来实现。
U需要像下面这样继承gridview,它可以正确测量子高度。
public class NonScrollableGridView extends GridView {
public NonScrollableGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// Do not use the highest two bits of Integer.MAX_VALUE because they are
// reserved for the MeasureSpec mode
int heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightSpec);
getLayoutParams().height = getMeasuredHeight();
}
}