我正在用android制作一些动画,我在足球场内有球员。对于我要添加标签的某些元素,添加一些约束以将它们与各自的视图组合在一起,并在动画开始时让标签跟随它们。
我尝试了这两种解决方案,但textview一直跳到约束布局的起源:
How to programmatically add views and constraints to a ConstraintLayout?
Add a view programmatically in ConstraintLayout
我为这些解决方案尝试了很多变体,但没有运气。我当然想念某些东西...任何想法都将不胜感激!
我在其中创建视图的代码:
*.hostA.mobility.typename = "OfflinePhaseMobility"
*.hostA.mobility.rowCount = 101
*.hostA.mobility.x1 = 0m
*.hostA.mobility.y1 = 0m
*.hostA.mobility.x2 = 100m
*.hostA.mobility.y2 = 100m
*.hostA.mobility.speed = 1mps
*.hostA.mobility.constraintAreaMinX = 0m
*.hostA.mobility.constraintAreaMinY = 0m
*.hostA.mobility.constraintAreaMaxX = 100m
*.hostA.mobility.constraintAreaMaxY = 100m
答案 0 :(得分:0)
setX()
根据documentation执行以下操作:
设置此视图的可视x位置(以像素为单位)。这等效于将translationX属性设置为传入的x值与当前left属性之间的差。
setTranslationX()
也会根据documentation执行此操作:
设置此视图相对于其左侧位置的水平位置。除了将对象的布局放置在任何位置之外,这还可以有效地放置对象的后布局。
setY()
和setTranslationY()
对于y坐标也是如此。
这里的关键词是后布局。您的ImageView
由于没有限制,因此位于顶部/左侧。 TextView
根据其约束放置在ImageView
上,因此也放置在顶部/左侧。现在,两个视图都位于顶部/左侧,ImageView
将根据setX()
和setY()
进行移动,而将TextView
留在后面。
有两种方法可以解决此问题。可能最简单的方法是将应用于ImageView
的翻译应用于TextView
。