這是我的第一個問題。層次結構查看器使高度發生變化
我已經構建了一個自定義組件:RelativeLayout
,底部有TextView
,上面有兩個ImageView
,充當直方圖的2列可點擊元素。要設置欄的高度,我得到onLayout()
的「可用高度」,作爲容器的高度減去標籤的一個:
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
mAvailHeight = getHeight()-findViewById(R.id.label).getHeight(); // it works
,然後分配給它(乘以一個0.1-1的值。)作爲佈局參數到ImageView的:
View bar = findViewById(R.id.bigBar);
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) bar.getLayoutParams();
rlp.height = Math.round((float)mAvailHeight * mBigBarHeight);
}
的mBigBarHeight
變量(0.-1)可通過該功能進行設置:
public void setBigBarHeight(float value, float max) {
mBigBarHeight = value/max;
requestLayout(); //
invalidate(); // do these help? i find no difference
}
查閱。當我在onCreate()
中添加這些「HistogramBar」中的一個,並設置高度並按照我的預期標記一切正常。如果我稍後嘗試修改它們,請說onClickSomething:
bar.setBigBarHeight(25, 100);
bar.setSmallBarHeight(50, 100);
bar.setLabel("jjk");
只有標籤更改。我使用Hierarchy Viewer進行了檢查,實際上LayoutParams確實發生了變化。如果我再次點擊更改顯示。
有趣的是,即使我做「加載視圖層次」從工具變化得到顯示(仿真器)!!怎麼了?這很奇怪嗎?我想在我的代碼中這樣做,以便它的工作原理!
我找不到任何類似的問題。謝謝。
一個類似的問題:http://stackoverflow.com/q/2469466/503900。答案並沒有幫助我。 – bigstones 2010-11-11 20:35:58