2014-09-02 30 views
11

W mojej aktywności ustawiam układ activity_main onCreate. Chciałbym następnie nadmuchać mój CardView dla każdego elementu w mojej tablicy.CardView stracił margines podczas pompowania

Do tej pory mam wszystko załadowane, jednak moje CardView straciły swój margines. Po dodaniu do układu za pomocą XML margines działa, ale gdy jest zawyżony jako oddzielny plik XML, marża jest tracona.

jestem pompowania activity_main_card tak:

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

W activity_main_card, mój XML jest następujący:

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

Czy ktoś może mi punkt w kierunku, gdzie wezwę niewłaściwy?

Odpowiedz

24

Przekazujesz w null jako parametr nadrzędny ViewGroup na inflate(). Spowoduje to zignorowanie wszystkich atrybutów layout_*, ponieważ nadmuchawca nie ma pojęcia, które atrybuty są ważne dla kontenera, w którym będzie umieszczony (tj. Nie ma pojęcia, który typ LayoutParams ustawić na View).

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

powinny być

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

Aby uzyskać więcej informacji, zobacz this great article o nim - to częsty błąd.

+2

Dzięki. To ma sens, jednak oficjalna dokumentacja nieco myląca to szacunek. Dobry artykuł też! – K20GH

+0

Działa jak urok. Dzięki. – DysaniazzZ

Powiązane problemy