android - 将元素与不同 ConstraintLayout 中的元素对齐

标签 android

我目前正在熟悉新的 ConstraintLayout,并尝试将它们与卡片 View 相结合,但在尝试对齐两个 CardView 之间的元素时遇到了障碍

我想在这张图片中对齐

  • 带有装甲等级的心形图
  • 发起倡议的 5 人
  • 速度最快的 10

The current status

但我似乎无法做到这一点。这是我尝试过的:

ConstraintLayout
   -CardView
       -ArmorClassTextView
       -...
   -CardView
       -HitPointView
       -...

这不起作用,因为添加到嵌套元素的约束似乎被忽略了。

LinearLayout
    -CardView
        -ConstraintLayout
            -ArmorClassTextView
            -...
    -CardView
        -ConstraintLayout
            -HitPointView
            -...

在这里,HitPointView 可以与其 ConstraintLayout 中的其他元素对齐,但不能与另一个元素中的元素对齐。如果我尝试,我会收到一条错误消息,指出引用的元素不是同一 RelativeLayout 中的同级元素。

你能给我一个关于如何完成这种对齐的提示吗?我已经没有想法了。

最佳答案

它实际上不工作是有充分理由的:ConstraintLayout 看到的所有内容(它可以布局的内容)都是它的直接子级(事实上,就像任何其他布局一样)。这就是为什么您不能在这两个卡片 View 之间设置约束,因为卡片 View 是您在这种情况下可以应用约束的唯一元素。

现在,我们正在考虑在未来实现一些可能有助于这种情况的事情(虚拟 View 组、绘制元素……)。但那是针对 ConstraintLayout 的 future 版本,所以现在对你来说并没有真正的帮助:)

也就是说,作为解决方法,您今天可以做几件事:

  • 如果使用两个 ConstraintLayout,您可能想要添加垂直指南并在两个布局中创建相同的指南;然后将内部元素约束到这些准则。具体来说,您可以在 33% 和 66% 的相对位置创建两个垂直指南,以便基本上创建 3 列,然后通过连接每一边来居中元素:| <- A -> | <- B -> | <- C -> | .然后为您的第二个 cardview 复制该设置。不是很好,但可能更容易维护。

  • 使用单个 ConstraintLayout,但不是将元素设置在卡片 View 内部,而是将它们移出卡片 View 。在 xml 的开头声明卡片 View ,然后是小部件。以正确调整大小(使用 0dp)的方式将卡片 View 限制到小部件

关于android - 将元素与不同 ConstraintLayout 中的元素对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37885364/

相关文章:

android - 暂停和恢复 Android repo 同步

php - 当我将 JSON 发送到 WEB 服务器时,发生错误 : org. json.JSONException:字符 3 处的输入结束

android - 使用 ADB 命令启用/禁用 NFC

java - 如何在 android 中获取 INFLATED View 的 id?

java - 安卓摇一摇代码

java - 生成并播放声音信号

android - 使用 ViewPager 实现捏缩放

android - Android 版 Apache MINA 与 netty

java - Android Google Maps Api Tileprovider 重复 x

android - 如何在Flutter中修复在编译时和运行时具有不同版本的 'android.arch.lifecycle:runtime'?