我做了一个复合控件,但是当我将这个新组件添加到带有其他标准组件的XML层(例如TextView)时,当这个图层膨胀时,复合控件在底部添加了一个大的边距,将其与其他组件。我尝试添加Layer_bottomMargin = 0dp但没有成功,解决这个问题的唯一方法是将layer_height添加一个固定值(即15dp)而不是“wrap_content”,但这个解决方案对我来说不合适,因为我想从我的化合物中删除一些组件控制。
我的复合控制的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="left|top"
android:clickable="false"
android:background="#CCCCCC"
android:layout_marginTop="@dimen/fieldset_margin"
>
<TextView
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/title_default"
android:textSize="14sp"
/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@color/fieldset_lines_shadow"
/>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="@color/fieldset_lines_light"
/>
</LinearLayout>
包含此复合控件的我的图层代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#C8D5F6FF"
android:gravity="top"
android:layout_margin="8dp"
>
<com.apps.example.Header
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/fieldset_text_secondary"
android:text="nananananan"
android:textSize="10sp"
android:layout_marginLeft="@dimen/fieldset_margin"
/>
</LinearLayout>
很抱歉,这是我的第一篇文章,我无法上传图片。
提前致谢。
答案 0 :(得分:0)
我通过覆盖复合控件类中的onMeasure方法来解决部分问题。我以前没有这个,因为在官方文件中:
http://developer.android.com/guide/topics/ui/custom-components.html
表示在创建复合控件时没有必要覆盖此方法。
无论如何,这是部分解决方案,因为以编程方式将化合物的单个控件不可见(GONE)发生在原始帖子中提到但具有较小边距空间的相同问题。
我会继续尝试解决这个问题,但就目前而言,这是我的解决方案。
谢谢!