2014-09-02 19 views
11

Nella mia attività, sto impostando il layout activity_main onCreate. Sto quindi volendo gonfiare il mio CardView per ciascuno degli articoli nel mio array.CardView ha perso margine durante il gonfiaggio

Finora, ho caricato tutto, tuttavia i CardView hanno perso il loro margine. Quando viene aggiunto al layout tramite XML, il margine funziona, ma quando viene gonfiato come file XML separato, il margine viene perso.

sto gonfiare l'activity_main_card in questo modo:

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

Nel activity_main_card, il mio XML è la seguente:

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

Qualcuno mi può puntare nella direzione in cui sto andando male?

risposta

24

Si sta passando null come parametro genitore ViewGroup su inflate(). Ciò causerà l'ignoranza di tutti gli attributi layout_*, in quanto l'inflattore non ha idea di quali attributi siano validi per il contenitore in cui verrà inserito (ovvero non ha idea di quale tipo LayoutParams impostare su View).

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

dovrebbe essere

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

Per ulteriori informazioni, vedere this great article su di esso - è un errore comune.

+2

Grazie. Questo ha senso, tuttavia la documentazione ufficiale è un po 'confusa rispetto. Bel articolo anche! – K20GH

+0

Funziona come un fascino. Grazie. – DysaniazzZ

Problemi correlati