解决ListView在ScrollView显示不全
两种方式
一、
package com.llkj.qcjd.myview;
import android.content.Context;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ListView;
public class AdListView extends ListView {
public AdListView(Context context) {
super(context);
}
public AdListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AdListView(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);
}
}
方式二
public void setListViewHeightBasedOnChildren(ListView listView) {
// 获取listview的适配器
PersonalAdListAdapter listAdapter = (PersonalAdListAdapter) listView
.getAdapter();
// item的高度
int itemHeight = 45;
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
totalHeight += Dp2Px(getApplicationContext(), itemHeight)
+ listView.getDividerHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight;
listView.setLayoutParams(params);
}
public int Dp2Px(Context context, float dp) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}