Pertanyaan CardView kehilangan margin saat menggembungkan


Dalam aktivitas saya, saya menetapkan aktivitas tata letak_main onCreate. Saya kemudian ingin mengembang CardView saya untuk masing-masing item dalam array saya.

Sejauh ini, saya sudah mendapatkan semua yang dimuat, namun CardView saya telah kehilangan margin mereka. Ketika ditambahkan ke tata letak melalui XML, margin berfungsi, tetapi ketika dipompa sebagai file XML terpisah, marginnya hilang.

Saya menggembungkan activity_main_card seperti:

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

Di activity_main_card, XML saya adalah sebagai berikut:

<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>

Adakah yang bisa mengarahkan saya ke arah di mana saya salah?


12
2017-09-02 21:31


asal


Jawaban:


Anda sedang lewat null sebagai orang tua ViewGroup parameter ke inflate(). Ini akan menyebabkan semuanya layout_* atribut harus diabaikan, karena inflater tidak tahu atribut mana yang valid untuk kontainer yang akan ditempatkan (yaitu tidak tahu yang mana LayoutParams ketik untuk mengatur pada View).

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

seharusnya

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

Untuk info lebih lanjut, lihat artikel bagus ini tentang itu - itu adalah kesalahan umum.


26
2017-09-02 21:45