这是我的自定义视图( custom_view.xml ): *请注意,我在CardView上定义了3个边距。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:background="@color/white"
android:orientation="vertical"
app:cardCornerRadius="4dp"
app:cardElevation="0dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="16dp"
android:background="@color/white">
<ImageView
android:id="@+id/left_image"
android:layout_width="64dp"
android:layout_height="40dp"
android:layout_marginTop="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@id/left_image"
android:layout_toLeftOf="@+id/right_image"
android:layout_toRightOf="@id/left_image"
android:layout_toStartOf="@id/right_image"
android:orientation="vertical">
<com.ringapp.ui.view.TypefaceTextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.ringapp.ui.view.TypefaceTextView
android:id="@+id/description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<ImageView
android:id="@id/right_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginTop="5dp"
android:src="@drawable/icon_md_gray_arrow" />
</RelativeLayout>
</android.support.v7.widget.CardView>
我在以下xml( container.xml )上添加自定义布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp"
android:orientation="vertical">
<com.ringapp.ui.view.CustomView
android:id="@+id/test2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:description="edsc"
app:title="title" />
<com.ringapp.ui.view.CustomView
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:description="asdasd"
app:title="asdasdasd" />
</LinearLayout>
问题是我在custom_view.xml上定义的边距没有出现在container.xml布局上。为什么会这样?如果我将custom_view.xml的代码直接粘贴到container.xml上,则会出现边距。
答案 0 :(得分:0)
而不是
<com.ringapp.ui.view.CustomView
android:id="@+id/test2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
试试这个:
<include layout="@layout/custom_view" android:id="@+id/test2/>
我相信当你使用你拥有的代码时,android会尝试覆盖你视图的某些属性,特别是当你明确覆盖布局宽度/高度时。尝试使用上面的代码代替您的代码。此外,如果您要打包内容,则无需覆盖布局宽度/高度,因为布局维度将从您的custom_view中提取。
编辑:为了澄清,如果您取消布局宽度/高度覆盖,您的代码甚至可能会起作用。但是,在将其他XML布局引入不同的XML布局时,应该使用includes。你'包含'你的视图的方式很好,但是当你编写扩展android'View'的自定义视图类时,应该可以使用它。