这是我的第一个问题。
我已经构建了一个自定义组件:aRelativeLayout
在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
}
现在。当我添加其中一个“HistogramBar”onCreate()
并设置高度和标签时,一切都按我的预期工作。如果我稍后尝试修改它们,请说 onClickSomething:
bar.setBigBarHeight(25, 100);
bar.setSmallBarHeight(50, 100);
bar.setLabel("jjk");
只有标签改变。我检查了层次结构查看器,实际上 LayoutParams 确实发生了变化。如果我再次点击更改出现。
有趣的是,即使我从工具更改中执行“加载视图层次结构”也会显示(在模拟器上)!发生什么了?奇怪吗?我想在我的代码中这样做,以便它工作!
我找不到任何类似的问题。谢谢。