2014-09-02 3 views
11

В моей деятельности я устанавливаю макет activity_main onCreate. Затем я хочу раздуть свой CardView для каждого из элементов в моем массиве.CardView потерял разницу при раздувании

До сих пор у меня все загружено, однако мой CardView потерял свою маржу. При добавлении к макету через XML маржа работает, но когда ее раздувается как отдельный XML-файл, маржа теряется.

Я раздувания activity_main_card как так:

LinearLayout item = (LinearLayout)findViewById(R.id.card_holder); 
View child = getLayoutInflater().inflate(R.layout.activity_main_card, null); 
item.addView(child); 

В activity_main_card, мой XML выглядит следующим образом:

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_gravity="center" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    card_view:cardCornerRadius="2dp" 
    android:layout_marginBottom="16dp"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ImageView 
      android:layout_width="100dp" 
      android:layout_height="100dp" 
      android:scaleType="fitCenter" 
      android:background="@drawable/cin"/> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:padding="16dp"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="20sp" 
       android:textStyle="bold" 
       android:textColor="@color/dark_grey"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textSize="12sp" 
       android:textStyle="normal" 
       android:textColor="@color/grey_500"/> 

     </LinearLayout> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 

Может кто-нибудь мне точку в направлении, где я неправильно?

ответ

24

Вы передаете null в качестве родительского параметра ViewGroup в значение inflate(). Это приведет к игнорированию всех атрибутов layout_*, так как надуватель не имеет представления о том, какие атрибуты действительны для контейнера, в который он будет размещен (т. Е. Он не знает, какой тип LayoutParams установить на View).

View child = getLayoutInflater().inflate(R.layout.activity_main_card, null); 

должен быть

View child = getLayoutInflater().inflate(R.layout.activity_main_card, item, false); 

Для получения дополнительной информации см this great article об этом - это общая ошибка.

+2

Спасибо. Это имеет смысл, однако официальная документация немного путает его в этом отношении. Хорошая статья тоже! – K20GH

+0

Работает как очарование. Спасибо. – DysaniazzZ