Подтвердить что ты не робот

CardView потерял преимущество при раздувании

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

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

Я раздуваю action_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>

Может ли кто-нибудь указать мне, в каком направлении я ошибаюсь?

4b9b3361

Ответ 1

Вы передаете 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);

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