14

我有一个布局,左侧有一组小部件,右侧有其他小部件。

现在我想在中间放一个按钮,在两个文本视图下方(一个在左边,另一个在右边)。

我收到以下代码的错误(“重复属性”):

android:layout_centerInParent="true"
android:layout_below="@id/text_left"
android:layout_below="@id/text_right"

我该如何解决这个问题?

谢谢。

4

5 回答 5

49

如果您在不同的布局中具有相同的 xmlns 属性,也会出现此错误消息。

在这种情况下,xmlns:tools 在 layout 和 ConstraintLayout 中重复。从其中一种布局中删除它应该可以解决问题。

    <layout xmlns:tools="http://schemas.android.com/tools"
        xmlns:android="http://schemas.android.com/apk/res/android"> 

        <data>
            <variable
                name="item"
                type="com.myapp.SearchSettings" />
        </data>

        <android.support.constraint.ConstraintLayout

            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools" <-- remove this line

(it is already in layout tag)
于 2018-04-15T00:08:24.107 回答
35

对于那些,接受的答案不起作用,并且通过任何更改您正在使用 android Data Binding那么如果某些属性在 parent tag 和 child tag中出现两次,则可能会出现这种错误。在下面的示例中,在parentchildandroid:layout_width="match_parent" android:layout_height="wrap_content"中使用了两次

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <data>

        <variable
            name="pdpDescriptionViewModel"
            type="com.tottus.ui.productdescription.model.PdpDescriptionViewModel" />
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </LinearLayout>


</layout>

要解决此问题,请从父级或子级中删除重复属性,它应该可以工作。

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

    <data>

        <variable
            name="pdpDescriptionViewModel"
            type="com.tottus.ui.productdescription.model.PdpDescriptionViewModel" />
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </LinearLayout>


</layout>
于 2019-12-11T11:23:15.227 回答
16

您正在设置layout_below两次。

如果您希望相关布局低于这两者,请尝试将text_left和组合text_right成一个布局,然后使用layout_below您为包含 和 组合的布局分配的text_left名称text_right

于 2012-12-20T17:25:58.540 回答
1

你设置layout_below了两次。

android:layout_below="@id/text_left"
android:layout_below="@id/text_right"

您只能为每个小部件设置一次,在这种情况下是您的Button. 您实际上是在尝试通过多次调用来告诉Button将自己置于两个不同的项目之下。android:layout_below

如果最终结果不是您所期望的,只使用其中一个,TextViews您可能必须将您的参考点调整为跨越整个宽度的东西,或者可能将您包裹TextViews在 a 中LinearLayout并将其用作您的参考点。在根级别切换布局类型可能更容易,移动到 aLinearLayout并根据需要嵌套它们。

于 2012-12-20T17:24:07.653 回答
0

您需要选择一个您的android:layout_below. 你不能两者兼得。

于 2012-12-20T17:24:50.803 回答