1

我有课

    public class CompactFeedItemView extends LinearLayout {
        public CompactFeedItemView(Context context,MyObject a) {
            LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            inflater.inflate(R.layout.compactfeedviewitem,this,true);
        }
}

然后我有 compactfeedviewitem.xml 文件:

<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id='@+id/feedViewItemOuterLayout' 
    android:layout_marginTop="10dp" 
    android:layout_marginBottom="10dp"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/compactfeedborder"
    >

    <ImageView android:id="@+id/feedItemIcon"
        android:src="@drawable/missing" 
        android:layout_height="fill_parent" 
        android:layout_width="wrap_content"
        android:adjustViewBounds="true"
        />
</merge>

这有效,并且图像视图被合并并添加为子视图,但它忽略了合并标签中的 android:layout_marginTop="10dp" android:layout_marginBottom="10dp" 属性。

那么如何合并属性,或者这是不可能的?我可以更改为 . 这会起作用,但我最终会为我创建的每个 CompactFeedItemView 额外添加一个无用的 LinearLayout 元素。这正是我想通过合并避免的。

4

1 回答 1

1

我认为这是不可能的,因为merge标签的全部目的是删除不必要的ViewGroup对象,并且指定属性(如边距)需要将ViewGroup对象放置在视图层次结构中。

于 2013-08-06T13:27:00.667 回答