2013-08-06 3 views
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> 

И это работает, и ImageView слито в и добавил, как ребенок, НО он игнорирует android: layout_marginTop = "10dp" android: layout_marginBottom = "10dp" атрибуты из тега merge.

Как я могу объединить атрибуты, или это невозможно? Я мог бы изменить. Это будет работать, но затем я получаю лишний бесполезный элемент LinearLayout для каждого создаваемого CompactFeedItemView. Именно этого я и хотел избежать слиянием.

ответ

1

Я не думаю, что это возможно, потому что весь смысл merge тега, чтобы удалить ненужные ViewGroup объекты и уточняющие атрибуты (например, маржа) потребует ViewGroup объекта, который будет помещен в иерархии представлений.

+0

Но есть объект ViewGroup. CompactFeedItemView - объект ViewGroup, поэтому я ожидаю, что он объединит атрибуты от в эту группу. Нет причин не делать этого. – MTilsted

Смежные вопросы