Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用引用父视图的资源?_Android_Layout_Constraints_Tablet - Fatal编程技术网

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

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

我有一个lyaout,我想改变它在手机和平板电脑中的限制

我想在使用手机设备时将top_toTop设置为与viewA相关

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>