如何使用引用父视图的资源?

问题描述 投票:1回答:2

我有一个布局,我想改变手机与平板电脑的约束。

我想在电话设备中将top_toTop设置为与viewA相关

app:layout_constraintTop_toTopOf="@+id/viewA"

我希望它与平板设备中的父母相关

app:layout_constraintTop_toTopOf="parent"

我想用resource referencing,但我如何引用父母?它不是一种资源

android layout constraints tablet
2个回答
1
投票

选项1

您可以使用父视图的id(ConstraintLayout本身)来代替使​​用parent,这样您就可以将id与特定于配置的资源交换。说你的布局看起来像这样:

<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个不同的id引用,例如phone:

<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"的代码是正确的,但你必须放入正确的布局文件夹

您还可以使用ID创建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"
© www.soinside.com 2019 - 2024. All rights reserved.