在Android中,我试图将TextView
从父母边界外移动到视图中,但内容从未显示,或者如果它已部分位于边界内,则会保留剪辑。
(下面是另一个视图,完全超出界限,也没有绘制)
我在扩展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 ......