Android - ConstraintLayout 使用维度的百分比

Android - ConstraintLayout percentage using dimens

有一个问题,其答案显示了如何使用百分比:

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="1dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="0.5"/>

但是如果您不想对百分比进行硬编码而是使用 dimen 资源,则它不起作用。

<!-- inside the layout -->

<android.support.constraint.Guideline
    android:id="@+id/guideline"
    android:layout_width="1dp"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:layout_constraintGuide_percent="@dimen/guideline_perc"/>

<!-- inside dimens.xml -->

<dimen name="guideline_perc>0.5</dimen>

您收到以下错误:

Float types not allowed (at 'guideline_perc' with value 0.5).

如果将值替换为 1,将返回类似的错误:

Integer types not allowed (at 'guideline_perc' with value 1).

如何在不将值硬编码到布局中的情况下设置百分比?

不使用 dimen 资源,而是使用 dimen 类型的项目资源:

<item name="guideline_perc" type="dimen">0.5</item>

如果使用整数,integer 资源效果最佳:

<integer name="guideline_perc">1</integer>

要设置百分比,请使用分数语法

<fraction name="guideline_perc">0.5</fraction>

然后

app:layout_constraintGuide_percent="@fraction/guideline_perc"

现在 2021 年 dimen float 可以正常工作了。在这种情况下,Android studio 中的自动完成功能不会。不知道为什么。

app:layout_constraintGuide_percent="@dimen/guideline_perc"

系统自行生成

<item name="porcent_line_top_navebar" type="dimen" format="float">0.88</item>