Android 如何使用引用父视图的资源?
我有一个lyaout,我想改变它在手机和平板电脑中的限制 我想在使用手机设备时将top_toTop设置为与viewA相关Android 如何使用引用父视图的资源?,android,layout,constraints,tablet,Android,Layout,Constraints,Tablet,我有一个lyaout,我想改变它在手机和平板电脑中的限制 我想在使用手机设备时将top_toTop设置为与viewA相关 app:layout_constraintTop_toTopOf="@+id/viewA" 我希望它与平板电脑设备中的aprent相关 app:layout_constraintTop_toTopOf="parent" 我想使用,但我如何引用家长?它不是一个资源您拥有的代码是正确的,但您必须将其放入正确的布局文件夹中 您还可以使用ID创建2个dimens文件 电话 选项1
app:layout_constraintTop_toTopOf="@+id/viewA"
我希望它与平板电脑设备中的aprent相关
app:layout_constraintTop_toTopOf="parent"
我想使用,但我如何引用家长?它不是一个资源您拥有的代码是正确的,但您必须将其放入正确的布局文件夹中 您还可以使用ID创建2个dimens文件 电话
选项1 您可以使用父视图的id(ConstraintLayout本身),而不是使用父视图的id(ConstraintLayout本身),这样您就可以将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>
然后,您可以在配置中定义两个不同的id引用,例如电话:
<resources>
<item name="anchorView" type="id">@id/rootView</item>
</resources>
@id/rootView
和平板电脑:
<resources>
<item name="anchorView" type="id">@id/someView</item>
</resources>
@id/someView
选项2
为视图定义一种样式,并具有该样式的两个版本,一个用于手机:
<style name="MyView">
<item name="layout_constraintTop_toTopOf">parent</item>
</style>
父母亲
还有一个是平板电脑:
<style name="MyView">
<item name="layout_constraintTop_toTopOf">@+id/viewA</item>
</style>
@+id/viewA
所以我必须复制整个布局?无法通过运行时解析资源引用来完成此操作?可以动态放置@id吗?可以在dimens.xml中放置@id吗?dimen的类型为integer。@id也是如此,这就是它编译的原因,但我认为它不会改变事实上的约束
<resources>
<item name="anchorView" type="id">@id/someView</item>
</resources>
<style name="MyView">
<item name="layout_constraintTop_toTopOf">parent</item>
</style>
<style name="MyView">
<item name="layout_constraintTop_toTopOf">@+id/viewA</item>
</style>