2016-09-30 69 views
1

我想使用约束布局链垂直居中两个文本。我知道我可以用线性布局来包装文字布局,但我想尝试新的链式特征。当我建立我的项目,虽然我得到一个错误,Error:(28, 50) No resource found that matches the given name (at 'layout_constraintBottom_toTopOf' with value '@id/item_school_location').约束布局链包装使用

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <android.support.constraint.ConstraintLayout 
     android:layout_width="match_parent" 
     android:layout_height="72dp"> 

     <ImageView 
      android:id="@+id/item_school_logo" 
      android:layout_width="48dp" 
      android:layout_height="48dp" 
      android:layout_marginStart="16dp" 
      android:contentDescription="@string/item_school_logo_description" 
      app:layout_constraintBottom_toBottomOf="parent" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintTop_toTopOf="parent" 
      app:layout_constraintVertical_bias="0.5" /> 

     <TextView 
      android:id="@+id/item_school_name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="16dp" 
      android:layout_marginStart="72dp" 
      android:maxLines="1" 
      android:textAppearance="@style/TextAppearance.AppCompat.Light.SearchResult.Subtitle" 
      app:layout_constraintBottom_toTopOf="@id/item_school_location" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintTop_toTopOf="parent" 
      app:layout_constraintVertical_bias="0.5" 
      app:layout_constraintVertical_chainPacked="true" /> 

     <TextView 
      android:id="@+id/item_school_location" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="16dp" 
      android:layout_marginStart="72dp" 
      android:maxLines="1" 
      android:textAppearance="@style/TextAppearance.AppCompat.Small" 
      android:textSize="16sp" 
      app:layout_constraintBottom_toBottomOf="parent" 
      app:layout_constraintLeft_toLeftOf="parent" 
      app:layout_constraintTop_toBottomOf="@id/item_school_name" /> 
    </android.support.constraint.ConstraintLayout> 
</layout> 

任何人都知道是什么导致了这个错误?

回答

5
app:layout_constraintLeft_toLeftOf="parent" 

也许我不是完全是最新的,但我觉得值不应该是“父母” - 它应该是一个视图ID(在“@ + ID/SOME_ID”的格式)。

给你的约束布局一个id,然后尝试使用它而不是父级。

编辑:我想我已经过时了吗?因为我刚刚看了一遍,你的错误似乎是这一行:

layout_constraintBottom_toTopOf="@id/item_school_location" 

之后@缺少+ - 在它应该是

layout_constraintBottom_toTopOf="@+id/item_school_location" 
+0

哈!我有类似的问题。我没有想到这会奏效,但它确实如此。我想第一个参考ID(从顶部)应该有+号。 – amram99

+0

@ amram99 - 据我所知,在布局文件中所有对id的引用都应该在前面加上+。尝试一下,我相当肯定,即使你的引用是第二次出现的ID,如果没有+ –

+1

,它实际上仍然不能正常工作,这表示你正在分配一个新的ID。通常你会引用一个没有+的ID(比如在一个RelativeLayout中,但Android可以原谅多次分配相同的ID。查看这个答案 - http://stackoverflow.com/a/5731533/389643。但是由于Android使用元素的顺序来定义z顺序,有时你必须在元素的定义之上引用一个ID,有时会导致编译器的问题。 – amram99

1

我觉得

找不到与给定名称匹配的资源

错误是由于您引用的事实在引用它的元素(item_school_name)之后声明的元素(item_school_location)的id。

在这种情况下,它会帮助,如果你在一个单独的ids.xml文件中声明你的相关元素的ID(检查:https://stackoverflow.com/a/12247971