解决ViewPager 高度wrap_content无效问题
2014-03-05 12:27
363 查看
今天做了的项目中.用了tabhost,然后下边切换部分用的viewPager.当我把viewPager设置为wrap_content的时候,发现.怎么也不能显示其中的子内容.然后百度一顿搜.没找到真正能完成的结果.然后google.在stackflow里发现了老外解决了该问题.下边把代码下!
View Code
然后直接在xml布局里引用该类即可!
/** * ViewPager wrapContent解决方案 */ public class WrapContentHeightViewPager extends ViewPager { /** * Constructor * * @param context the context */ public WrapContentHeightViewPager(Context context) { super(context); } /** * Constructor * * @param context the context * @param attrs the attribute set */ public WrapContentHeightViewPager(Context context, AttributeSet attrs) { super(context, attrs); } // @Override // protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // super.onMeasure(widthMeasureSpec, heightMeasureSpec); // // // find the first child view // View view = getChildAt(0); // if (view != null) { // // measure the first child view with the specified measure spec // view.measure(widthMeasureSpec, heightMeasureSpec); // } // // setMeasuredDimension(getMeasuredWidth(), measureHeight(heightMeasureSpec, view)); // } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = 0; for(int i = 0; i < getChildCount(); i++) { View child = getChildAt(i); child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int h = child.getMeasuredHeight(); if(h > height) height = h; } heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } /** * Determines the height of this view * * @param measureSpec A measureSpec packed into an int * @param view the base view with already measured height * * @return The height of the view, honoring constraints from measureSpec */ private int measureHeight(int measureSpec, View view) { int result = 0; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); if (specMode == MeasureSpec.EXACTLY) { result = specSize; } else { // set the height from the base view if available if (view != null) { result = view.getMeasuredHeight(); } if (specMode == MeasureSpec.AT_MOST) { result = Math.min(result, specSize); } } return result; } }
View Code
然后直接在xml布局里引用该类即可!
相关文章推荐
- 解决ViewPager 高度wrap_content无效问题 - 向大拿学习
- 解决ViewPager 高度wrap_content无效问题
- 解决ViewPager中RecyclerView的高度设为wrap_content无效的问题
- ViewPager不能高度自适应?height=wrap_content 无效解决办法
- ViewPager不能高度自适应?height=wrap_content 无效解决办法
- ViewPager不能高度自适应?height=wrap_content 无效解决办法
- 解决ViewPager高度无法wrap_content问题
- ViewPager不能高度自适应?height=wrap_content 无效解决办法
- Android 解决ViewPager设置高度为wrap_content无效的方法 MyViewPager
- 【android】解决Viewpager设置高度为wrap_content无效的方法
- 【android】解决Viewpager设置高度为wrap_content无效的方法
- viewpager的layout_width="wrap_content"无效问题
- android-自定义View解决wrap_content无效的问题
- android-自定义View解决wrap_content无效的问题
- ScrollView中嵌套的viewPager,viepager高度设置为wrap_content时内容不显示问题以及与scrollview冲突的解决方案
- android-自定义View解决wrap_content无效的问题
- ViewPager高度自适应?height=wrap_content 无效、固定高度适配性差
- android-自定义View解决wrap_content无效的问题
- viewpager的layout_width="wrap_content"无效问题
- [置顶] 滚动嵌套viewpager,里面的fragment高度问题(已解决)