层次结构查看器使高度更改出现

时间:2010-11-11 00:33:00

标签: android android-layout custom-component android-custom-view

这是我的第一个问题。

我构建了一个自定义组件: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。值)作为布局参数分配给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");

只有标签发生变化。我检查了层次结构查看器,实际上LayoutParams确实发生了变化。如果我再次点击,则会出现更改。

有趣的是,即使我从工具做“加载视图层次结构” 更改显示(在模拟器上)!!怎么了?这很奇怪吗?我想在我的代码中这样做,以便它可以工作!

我找不到任何类似的问题。感谢。

1 个答案:

答案 0 :(得分:1)

从工具加载层次结构时,会发生重新布局/重绘以测量性能。你应该在什么时候调用requestLayout()。