2014-09-02 45 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 2014-09-02 21:47:47

+0

工程就像一個魅力。謝謝。 – DysaniazzZ 2017-07-04 05:43:50