gpt4 book ai didi

Android:我无法拥有 ViewPager WRAP_CONTENT

转载 作者:IT老高 更新时间:2023-10-28 12:51:53 25 4
gpt4 key购买 nike

我已经设置了一个简单的 ViewPager,它在每个页面上都有一个高度为 200dp 的 ImageView。

这是我的寻呼机:

pager = new ViewPager(this);
pager.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
pager.setBackgroundColor(Color.WHITE);
pager.setOnPageChangeListener(listener);
layout.addView(pager);

尽管高度设置为 wrap_content,但即使 ImageView 只有 200dp,寻呼机也始终填满屏幕。我试图用“200”替换寻呼机的高度,但这给了我不同分辨率的不同结果。我无法将“dp”添加到该值。如何将 200dp 添加到寻呼机的布局?

最佳答案

按如下方式覆盖 ViewPager 的 onMeasure 将使其获得当前拥有的最大 child 的高度。

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);

int height = 0;
int childWidthSpec = MeasureSpec.makeMeasureSpec(
Math.max(0, MeasureSpec.getSize(widthMeasureSpec) -
getPaddingLeft() - getPaddingRight()),
MeasureSpec.getMode(widthMeasureSpec)
);
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
child.measure(childWidthSpec, MeasureSpec.UNSPECIFIED);
int h = child.getMeasuredHeight();
if (h > height) height = h;
}

if (height != 0) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
}

super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

关于Android:我无法拥有 ViewPager WRAP_CONTENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8394681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com