Как использовать ресурс, ссылающийся на родительское представление?

1

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

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

app:layout_constraintTop_toTopOf="@+id/viewA"

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

app:layout_constraintTop_toTopOf="parent"

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

Теги:
layout
constraints
tablet

2 ответа

1

Опция 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

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

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

Телефон

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

таблетка

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

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

app:layout_constraintTop_toTopOf="@dimen/view_parent"
  • 0
    поэтому я должен дублировать весь макет? не может быть сделано путем разрешения ссылки на ресурс во время выполнения?
  • 0
    Вы можете поместить динамически developer.android.com/reference/android/support/constraint/…
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню