安卓HorizontalScrollView子项宽度

3

我有一个HorizontalScrollView,其中包含一个LinearLayout,该LinearLayout包含一些自定义视图。目前,我通过以下代码(在子项的构造函数中)固定子项的大小:

setLayoutParams(new LayoutParams(200, LayoutParams.FILL_PARENT));

我希望做的是将组件的宽度设置为自身高度的30%,而不是实际的200像素。但我仍然需要高度为“FILL_PARENT”。

当我重写了onMeasure方法时,我尝试了以下方法:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    System.out.println(widthMeasureSpec + "/" + heightMeasureSpec);
}

但是我获得了输出:
1073742024/1073742586

看起来我在这里无法做很多事情,因为我仍然没有很多信息 :)

有什么想法可以解决这个问题吗?

我需要说明的是,我正在模拟器上测试(不知道这是否重要)。


1
这应该足够了:@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int height = getMeasuredHeight(); super.onMeasure(MeasureSpec.makeMeasureSpec(height / 3, MeasureSpec.EXACTLY), heightMeasureSpec); } - user
1个回答

0
你可以获取屏幕的尺寸,例如:
DisplayMetrics display = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( display );
int screenW = display.widthPixels;
int screenH = display.heightPixels;

如果你想从组件的高度中减去0.3,而该组件的高度是整个屏幕的高度,则可以这样做:

setLayoutParams(new LayoutParams((int)(screenH*0.3), LayoutParams.FILL_PARENT));

我可能误解了你的问题,我刚醒来 :) 如果它起作用了或者你正在寻找其他东西,请告诉我。

问题在于它基于屏幕大小而不是父视图的大小。 - user1534422
哦,那么父视图不是整个屏幕的大小? - AndreiBogdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接