ListView内嵌套GridView,GridView显示不全

在ListView中嵌套GridView,GridView显示不全,重写GridView类的 onMeasure() 方法


public class GridViewForListView extends GridView {
    public GridViewForListView(Context context) {
        super(context);
    }

    public GridViewForListView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

还有一个问题是 ImageView的高度怎么按比例跟随宽度,(宽度是自动适配屏幕的),现在的笨方法是

得到屏幕宽度 - 间隔的宽度(dp转px)/ 列数 = 每个图的宽度 * 图片的长宽比 =得到 图片的高度

dp转px还需要得到屏幕的密度

private int screenWidth; //屏幕的宽度px
private int densityDpi; // 屏幕密度Dpi


DisplayMetrics metric = new DisplayMetrics();
((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metric);

screenWidth = metric.widthPixels;
densityDpi = metric.densityDpi;



ViewGroup.LayoutParams lp = viewHolder.imageView.getLayoutParams();
lp.height = (int)(((screenWidth - (16 + 72*(densityDpi/160)))/3) * 1.0693 );
viewHolder.imageView.setLayoutParams(lp);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值