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,// 設(shè)計(jì)一個(gè)較大的值和AT_MOST模式
? ? ? ? ? ? ? ? MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, newHeightMeasureSpec);//再調(diào)用原方法測(cè)量
? ? }
}
這個(gè)是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);
}
///測(cè)量高度 MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
/// MeasureSpec.AT_MOST)就是生成一個(gè)符合MeasureSpec的一個(gè)32位的包含測(cè)量模式和測(cè)量高度的int值
? ? @Override
? ? protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec)
{
int expend= MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expend);
}
}
這個(gè)可以放在幫助類(lèi)里面塘幅。都可以進(jìn)行調(diào)用姥卢。其中這兩個(gè)方法法里面都有著onMeasure這個(gè)方法谷市,
這個(gè)是用來(lái)測(cè)量高度的绰垂。其實(shí)問(wèn)題的本質(zhì)是娱局,無(wú)法判斷高度上趁怔。但是如果重寫(xiě)后便可以在原本的onMeasure上做文章
記住這兩個(gè)方法序目,外面都需要嵌套一個(gè)Scrollview腥泥。那么這個(gè)onMeasure方法是如何起作用的碎税?尤慰?
點(diǎn)進(jìn)去,你就可以看到蚣录,其實(shí)里面的過(guò)程如果你看不懂也沒(méi)關(guān)系割择,我也不怎么看的懂。不過(guò)萎河,最終他返回的是
一個(gè)適合測(cè)量模式和測(cè)量高度的一個(gè)int值荔泳。