Как использовать ресурс, ссылающийся на родительское представление? - PullRequest
1 голос
/ 08 апреля 2019

У меня есть выход, и я хочу изменить его ограничения на телефоне и планшете.

Я хочу установить top_toTop, чтобы относиться к viewA в то время как в устройстве телефона

app:layout_constraintTop_toTopOf="@+id/viewA"

И я хочу, чтобы это относилось к aprent в то время как в планшетном устройстве

app:layout_constraintTop_toTopOf="parent"

Я думал использовать ссылку на ресурс , но как мне сослаться на родителя?это не ресурс

Ответы [ 2 ]

1 голос
/ 08 апреля 2019

Вариант 1

Вместо использования parent вы можете использовать идентификатор родительского представления (сам ConstraintLayout), таким образом вы можете поменять только идентификатор с ресурсом, зависящим от конфигурации. Скажем, ваш макет выглядит так:

<android.support.constraint.ConstraintLayout
        android:id="@+id/rootView"
        ...
        >

    <View
        android:id="@+id/someView"
        ...
        />

    <View
        ...
        app:layout_constraintTop_toTopOf="@id/myAnchorView"/>

</android.support.constraint.ConstraintLayout>

Затем вы можете определить 2 разных идентификатора в вашей конфигурации, например, телефон:

<resources>
    <item name="anchorView" type="id">@id/rootView</item>
</resources>

И планшет:

<resources>
    <item name="anchorView" type="id">@id/someView</item>
</resources>

Вариант 2

Определите стиль для вашего представления и имейте 2 версии этого стиля, одну для телефона:

<style name="MyView">
    <item name="layout_constraintTop_toTopOf">parent</item>
</style>

и один для планшета:

<style name="MyView">
    <item name="layout_constraintTop_toTopOf">@+id/viewA</item>
</style>
0 голосов
/ 08 апреля 2019

код, который у вас есть app:layout_constraintTop_toTopOf="parent" правильный, но вы должны поместить его в правильную папку макета

Вы также можете создать 2 файла измерений с идентификаторами

телефон

<resources>
    <dimen name="view_parent">@id/viewA</dimen>
</resources>

1012 * таблетки *

<resources>
    <dimen name="view_parent">@id/parentId</dimen>
</resources>

расположение

app:layout_constraintTop_toTopOf="@dimen/view_parent"
...