Android TextView 动态修改scaleY属性后显示异常解决

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);
        }
}

搞定!

猜你喜欢

转载自blog.csdn.net/haha223545/article/details/87630981