移入边界后重新绘制Android视图中的剪切内容

时间:2015-08-14 15:47:35

标签: android android-layout clipping

在Android中,我试图将TextView从父母边界外移动到视图中,但内容从未显示,或者如果它已部分位于边界内,则会保留剪辑。

开始时的初始状况  enter image description here

动画后的情况  enter image description here

(下面是另一个视图,完全超出界限,也没有绘制)

我在扩展TextViews的自定义对象中彼此低于RelativeLayout。基于百分比,前2个应该移出它的边界,底部2应该移入(从底部)。

我使用以下代码更新每个TextView的属性。在这个类中,每个变量** positionY *都用layout-xml中的初始位置填充。 效果是介于0和0之间的百分比。 1.动画有效,但视图不会再次绘制。

public class ActionBarTitleView extends RelativeLayout {
    public void updateTransition(float effect) {
        float height = getHeight();
        titleView1.setY(title1positionY - height*effect);
        detailView1.setY(detail1positionY - height*effect);
        titleView2.setY(title2positionY - height*effect);
        detailView2.setY(detail2positionY - height*effect);
        invalidate();
    }
}

我尝试了什么

经过一些研究后,我发现了一些提示可能是什么问题,但到目前为止,没有一个尝试过的选项有任何影响。以下列出了我在SO上发现并尝试过的内容。

在RelativeLayout上调用invalidate() - 无效。 Invalditing TextViews - 没有效果。 对于RelativeLayout,clipChildren = false - 无效。 RelativeLayout的setWillNotDraw = false - 无效。 (正在调用onDraw)

我没有尝试用ScrollView来解决这个问题,但我不想真的,因为这会在层次结构中添加另一层非常小的东西。

我以为我理解了绘图逻辑,但也许我错过了一些东西,所以我希望有人能指出我正确的方向。

我最终做了什么(9月3日)

由于没有提供真正的解决方案,我再次尝试并进入以下“修复”。我将两个第二个标签设置为Visibility.GONE,但是在容器视图的原始边界内。然后当我开始动画时,我设置了正确的值,然后将它们移到边界之外,最后设置Visiblity.VISIBLE。当动画进行时,标签按预期滚动到视图中。所以解决了这个问题,但没有真正的解释为什么不再绘制TextViews ......

0 个答案:

没有答案