2012-10-13 138 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

相關問題