【问题标题】:Invalid Float for layout_constraintDimensionRatiolayout_constraintDimensionRatio 的浮点数无效
【发布时间】:2020-06-24 12:26:56
【问题描述】:

我一直在学习有关如何在活动窗口内限制图像的课程,当我尝试应用 1:1 的纵横比时,图像会从活动中的原始预期位置移到Activity 的左上角为 0dp x 0dp ImageView。

我的代码说这是"Invalid Float"的错误:

app:layout_constraintDimensionRatio="1:1"

这对我来说很神秘,因为系统还告诉我比率可以列为 FLOAT 或 RATIO。有人告诉我,我并不疯狂,当我小时候学习比率时,它们之间用冒号隔开。

我已多次删除 ImageViews 并以相等的 RATIO 次数重新添加约束。尽管如此,Android Studio 并不知道 1:1 的比例是多少。约束如下:

Top Constraint
+ ImageView1
+ ImageView2
Bottom constraint
app:layout_constraintDimensionRatio="1:1"
Invalid Float

ImageView 位于我的活动窗口顶部,为 0dp x 0dp 图像。

【问题讨论】:

  • 你没疯。但是您需要提供更多信息。使用您正在使用的 xml 代码更新问题。欢迎使用 StackOverflow

标签: android layout android-constraintlayout


【解决方案1】:

似乎约束布局实现发生了变化。

app:layout_constraintDimensionRatio="W,661:165"

这不再起作用了。我收到消息“无效浮点数”

解决方案很简单。此参数现在需要一个浮点值。在上面的例子中,我们所要做的就是除以 665/165 = 4.006(我们可以将值四舍五入)

所以这条线现在按预期工作:

app:layout_constraintDimensionRatio="4"

希望这个答案有帮助。

【讨论】:

    【解决方案2】:

    这个问题是完全有效的,我在其他任何地方都找不到答案。 问题是,如果您知道什么是 ratio 并仔细阅读错误,您会注意到,出于某种原因,布局希望您对其使用浮点表示法。

    例如,如果您想要 2:1 的比例,您希望 宽度两倍 高度。因此,您提供这样的配给 width/height,因为您希望 1 比 1 只需输入 app:layout_constraintDimensionRatio="1" 并开心。

    tl;dr:比率 1:1 = 1/1 = 1 -> app:layout_constraintDimensionRatio="1"

    【讨论】:

      【解决方案3】:

      我不确定这是否正是您正在寻找的,或者是否有帮助,但这是我成功地将它用于我的应用程序的方法。我相信您遇到的问题可能是您正在使用的 ImageView 缺乏约束(这就是为什么它可能会朝向屏幕的左上角)。但是,我不能自信地说出这个,因为我看不到你的代码。因为我不是专业人士,所以我可能错了,但这是我目前最好的猜测。

      <ImageView
                  android:id="@+id/userPicture"
                  android:src="@drawable/user_picture"
                  android:contentDescription="Update later"
      
                  android:layout_width="125dp"
                  android:layout_height="wrap_content"
      
                  android:layout_marginStart="0dp"
                  android:layout_marginEnd="0dp"
                  android:layout_marginTop="40dp"
                  android:layout_marginBottom="15dp"
      
                  android:scaleType="centerCrop"
                  android:adjustViewBounds="true"
      
                  app:layout_constraintTop_toTopOf="parent"
                  app:layout_constraintBottom_toTopOf="@id/currentTrackPlayingText"
                  app:layout_constraintStart_toStartOf="parent"
                  app:layout_constraintEnd_toEndOf="parent"
      
                  app:layout_constraintDimensionRatio="1:1" />
      

      这会产生以下内容,仅限于屏幕上的其他方面(抱歉,我没有足够的代表在这里显示图像)。

      link to example produced by above

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多