【问题标题】:how to use a resource referencing to a parent view?如何使用引用父视图的资源?
【发布时间】:2019-08-29 10:33:40
【问题描述】:

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

我想在手机设备中设置 top_toTop 与 viewA 相关

app:layout_constraintTop_toTopOf="@+id/viewA"

我希望它与平板设备中的用户相关

app:layout_constraintTop_toTopOf="parent"

我想使用resource referencing 但我如何引用父级?这不是资源

【问题讨论】:

    标签: android layout constraints tablet


    【解决方案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 个版本,一个用于手机:

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

    还有一个用于平板电脑:

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

    【讨论】:

      【解决方案2】:

      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"
      

      【讨论】:

      • 所以我必须复制整个布局?无法通过资源引用的运行时解析来完成?
      • 你能在dimens.xml中加入@id吗?
      • dimen 是整数类型。 @id 也是如此,这就是它编译的原因,但我认为它不会改变事实上的约束
      猜你喜欢
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多