在我的活动中,我正在设置布局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);
在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>
有人能指出我出错的方向吗?
答案 0 :(得分:27)
您将null
作为父ViewGroup
参数传递给inflate()
。这将导致忽略所有layout_*
属性,因为inflater不知道哪个属性对于放置它的容器有效(即它不知道要在哪个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有关它的信息 - 这是一个常见的错误。