我有一个布局,左侧有一组小部件,右侧有其他小部件。
现在我想在中间放一个按钮,在两个文本视图下方(一个在左边,另一个在右边)。
我收到以下代码的错误(“重复属性”):
android:layout_centerInParent="true"
android:layout_below="@id/text_left"
android:layout_below="@id/text_right"
我该如何解决这个问题?
谢谢。
如果您在不同的布局中具有相同的 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)
对于那些,接受的答案不起作用,并且通过任何更改您正在使用 android Data Binding那么如果某些属性在 parent tag 和 child tag中出现两次,则可能会出现这种错误。在下面的示例中,在parent和childandroid: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>
您正在设置layout_below
两次。
如果您希望相关布局低于这两者,请尝试将text_left
和组合text_right
成一个布局,然后使用layout_below
您为包含 和 组合的布局分配的text_left
名称text_right
。
你设置layout_below
了两次。
android:layout_below="@id/text_left"
android:layout_below="@id/text_right"
您只能为每个小部件设置一次,在这种情况下是您的Button
. 您实际上是在尝试通过多次调用来告诉Button
将自己置于两个不同的项目之下。android:layout_below
如果最终结果不是您所期望的,只使用其中一个,TextViews
您可能必须将您的参考点调整为跨越整个宽度的东西,或者可能将您包裹TextViews
在 a 中LinearLayout
并将其用作您的参考点。在根级别切换布局类型可能更容易,移动到 aLinearLayout
并根据需要嵌套它们。
您需要选择一个您的android:layout_below
. 你不能两者兼得。