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

时间:2019-04-08 09:51:06

标签: android layout constraints tablet

我有一个选择,我想更改手机与平板电脑之间的限制。

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

app:layout_constraintTop_toTopOf="@+id/viewA"

我希望它与平板电脑设备中的权限有关

app:layout_constraintTop_toTopOf="parent"

我想使用resource referencing,但是我该如何指代父母?这不是资源

2 个答案:

答案 0 :(得分: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引用,例如电话:

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

和平板电脑:

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

选项2

为您的视图定义样式,并具有该样式的2个版本,其中1个用于电话:

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

和一个平板电脑:

<style name="MyView">
    <item name="layout_constraintTop_toTopOf">@+id/viewA</item>
</style>

答案 1 :(得分:0)

您拥有app:layout_constraintTop_toTopOf="parent"的代码是正确的,但必须放入正确的布局文件夹中

您还可以使用ID创建2个dimns文件

  

电话

<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"