在充气时,CardView失去了保证金

K20*_*0GH 15 xml android

在我的活动中,我正在设置布局activity_main onCreate.我想为我的阵列中的每个项目充气我的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);
Run Code Online (Sandbox Code Playgroud)

在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>
Run Code Online (Sandbox Code Playgroud)

任何人都能指出我出错的方向吗?

kco*_*ock 28

您将null作为父ViewGroup参数传入inflate().这将导致layout_*忽略所有属性,因为inflater不知道哪个属性对于放置它的容器有效(即它不知道LayoutParams要在哪个类型上设置View).

View child = getLayoutInflater().inflate(R.layout.activity_main_card, null);
Run Code Online (Sandbox Code Playgroud)

应该

View child = getLayoutInflater().inflate(R.layout.activity_main_card, item, false);
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅这篇关于它的精彩文章 - 这是一个常见的错误.

  • 谢谢.这是有道理的,但官方文档有点令人困惑.好文章呢! (3认同)