我有一个布局,我想改变手机与平板电脑的约束。
我想在电话设备中将top_toTop设置为与viewA相关
app:layout_constraintTop_toTopOf="@+id/viewA"
我希望它与平板设备中的父母相关
app:layout_constraintTop_toTopOf="parent"
我想用resource referencing,但我如何引用父母?它不是一种资源
选项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>
你有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"