一个滚动界面,包含多个可滚动视图(ListView/GridView/ScrollView等);虽然也有人建议不要这么做,但是还是有很多需求。
用LinearLayout把item一个一个加进去
计算View的高度,然后设置height,然后全部放在同一个ScrollView里面
ListView里面的item根据不同的id去设置不同的视图,达到不同的ListView效果
让ListView/GridView自动适应高度的方法,达到完整显示:
import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; /** * Created by renkai on 15/7/30. */ public class InsideListView extends ListView { public InsideListView(Context context) { super(context); } public InsideListView(Context context, AttributeSet attrs) { super(context, attrs); } public InsideListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
遇到一个问题:
界面中有ListView,还有一个StaggeredGridView,要达到同时在一个ScrollView中展示。StaggeredGridView不能使用上述方法,这是继承于AbsListView的,本身的onMeasure不能对child进行自动计算。
解决方案:
ListView和其他视图作为StaggeredGridView的HeaderView,哈哈,搞定了。
很多时候HeaderView和FooterView还是很有用的,多学习吧。
(简单纪录一下,继续学习)