我有一个选择,我想更改手机与平板电脑之间的限制。
我想在电话设备中将top_toTop设置为与viewA相关
app:layout_constraintTop_toTopOf="@+id/viewA"
我希望它与平板电脑设备中的权限有关
app:layout_constraintTop_toTopOf="parent"
我想使用resource referencing,但是我该如何指代父母?这不是资源
答案 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"