1、问题场景
页面中有一个TextView,上面显示若干文字,我会动态设置文字的scaleY属性,大致的显示状态如下:
平常状态显示:
scaleY设置为2后状态显示:
从上面的图中可以明显的看到问题所在,当设置scaleY为2后会将其它View给覆盖掉。
2、问题解决
1、你即使设置TextView的高度为wrap_content,在修改scaleY属性后依然不会动态改变View的高度,这个需要你动态计算,并动态设置高度。
2、有的时候会绘制不完善,也就是说即使你修改了高度,实际显示时会傻那儿不变化,但是发现setVisibility后会显示正常,因为设置该属性后会使View进行整体重绘,可以解决绘制不完善的问题。
3、代码示例
private void setupFontStyle() {
if (bigFont) {
// 显示大字体
goodsContainer.getLayoutParams().height = DisplayUtil.dip2px(getContext(), 173);
goodsViews[i].setScaleY(2);
goodsViews[i].getLayoutParams().height = DisplayUtil.dip2px(getContext(), 150);
} else {
// 显示小字体
goodsContainer.getLayoutParams().height = DisplayUtil.dip2px(getContext(), 100);
goodsViews[i].setScaleY(1);
goodsViews[i].getLayoutParams().height = DisplayUtil.dip2px(getContext(), 77);
}
// 触发重新绘制
if (getVisibility() == VISIBLE) {
setVisibility(GONE);
setVisibility(VISIBLE);
}
}
搞定!