2012-10-13 101 views
2

我有一个Horizo​​ntalScrollView,它包含一个包含一些自定义视图的LinearLayout。现在,我通过这条线还是传统的儿童的大小(在孩子的构造函数):Android Horizo​​ntalScrollView儿童宽度

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

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

当我overrided的onMeasure梅索德,我tryed说:

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

但我得到的输出:

1073742024/1073742586 

所以它看起来喜欢我不能在这里做了很多事情,仍然我没有很多信息:)

任何想法如何做的伎俩?

我确切的说,我在模拟器上测试(不知道这件事情)。

+1

这应该是足够了:'@覆盖(int widthMeasureSpec,int heightMeasureSpec){ \t \t \t super.onMeasure(widthMeasureSpec,heightMeasureSpec); \t \t \t int height = getMeasuredHeight(); \t \t \t super.onMeasure(MeasureSpec.makeMeasureSpec(高度/ 3, \t \t \t \t \t MeasureSpec.EXACTLY),heightMeasureSpec); ''。 – Luksprog

+0

完美地工作,谢谢! – user1534422

回答

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)); 

我可能误解了你的问题,我刚刚睡醒:)让我知道它的工作,或者如果你正在寻找别的东西

+0

问题是它基于屏幕的大小,而不是父视图的大小。 – user1534422

+0

呵呵,所以父视图不是整个屏幕的大小? – AndreiBogdan

相关问题