package com.example.acer.mymusic.View;
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.ListView;
/**
* Created by kang on 2018/3/15.
*/
public class MyListViewextends ListView
{
public MyListView(Context context) {
super(context);
}
public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyListView(Context context, AttributeSet attrs,int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public MyListView(Context context, AttributeSet attrs,int defStyleAttr,int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) {
int newHeightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,// 设计一个较大的值和AT_MOST模式
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, newHeightMeasureSpec);//再调用原方法测量
}
}
这个是MyListview
package com.example.acer.mymusic.View;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* Created by kang on 2018/4/6.
*/
public class GrideViewScrollextends GridView
{
public GrideViewScroll(Context context) {
super(context);
}
public GrideViewScroll(Context context, AttributeSet attrs) {
super(context, attrs);
}
public GrideViewScroll(Context context, AttributeSet attrs,int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
///测量高度 MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
/// MeasureSpec.AT_MOST)就是生成一个符合MeasureSpec的一个32位的包含测量模式和测量高度的int值
@Override
protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec)
{
int expend= MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expend);
}
}
这个可以放在帮助类里面。都可以进行调用。其中这两个方法法里面都有着onMeasure这个方法,
这个是用来测量高度的。其实问题的本质是,无法判断高度上。但是如果重写后便可以在原本的onMeasure上做文章
记住这两个方法,外面都需要嵌套一个Scrollview。那么这个onMeasure方法是如何起作用的??
点进去,你就可以看到,其实里面的过程如果你看不懂也没关系,我也不怎么看的懂。不过,最终他返回的是
一个适合测量模式和测量高度的一个int值。