Android - 使用维度的ConstraintLayout百分比

nei*_*its 8 android percentage dimension android-resources android-constraintlayout

有一个问题如何让ConstraintLayout使用百分比值?它的答案显示了如何使用百分比:

<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"/>
Run Code Online (Sandbox Code Playgroud)

但是,如果你不想硬编码百分比但使用维度资源它不起作用.

<!-- 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>
Run Code Online (Sandbox Code Playgroud)

您收到以下错误:

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

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

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

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

Cat*_*san 11

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

<fraction name="guideline_perc">0.5</fraction>
Run Code Online (Sandbox Code Playgroud)

进而

app:layout_constraintGuide_percent="@fraction/guideline_perc"
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的一点:令人困惑的是,XML 编辑器不提供 _typeAhead_。仅当您正确拼写资源名称全名时,红灯才会熄灭。 (3认同)

nei*_*its 9

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

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

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

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