【发布时间】:2016-02-16 12:40:00
【问题描述】:
我正在尝试以编程方式创建一些视图,以匹配我在 XML 布局中制作的模型,但尽管看起来具有相同的属性,但它们的显示方式不同。
左边的卡片是使用下面的 XML 创建的,右边的卡片是使用代码创建的。正确的布局是左边那个,我的代码哪里错了?
XML(左图)
<LinearLayout
android:layout_width="wrap_content"
android:orientation="horizontal"
android:id="@+id/cardViewContainer"
android:layout_height="200dp">
<android.support.v7.widget.CardView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/testCard">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minHeight="200dp"
android:minWidth="200dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEST TITLE"
android:layout_weight="1"
android:layout_gravity="bottom"
android:gravity="center"
android:layout_margin="5px" />
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
代码(右图)
var layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
int cardMinDims = (int)(200 * scale + 0.5f);
TextView title = new TextView(this);
title.Text = "TEST TITLE";
title.Gravity = GravityFlags.Center;
var title_layoutParams = layoutParams;
title_layoutParams.Weight = 1;
title_layoutParams.Gravity = GravityFlags.Bottom;
title_layoutParams.SetMargins(5, 5, 5, 5);
LinearLayout layout = new LinearLayout(this);
layout.SetMinimumHeight(cardMinDims);
layout.SetMinimumWidth(cardMinDims);
layout.Orientation = Orientation.Vertical;
layout.AddView(title,title_layoutParams);
CardView card = new CardView(this);
card.AddView(layout, layoutParams);
LinearLayout cardViewContainer = FindViewById<LinearLayout>(Resource.Id.cardViewContainer);
cardViewContainer.AddView(card,layoutParams);
【问题讨论】:
-
添加布局重力和正常重力
-
这就是我所做的,不是@Madhur吗?
title.Gravity是设置常规重力,title_layoutParams.Gravity是设置布局重力? -
layout.Orientation = Orientation.Vertical;到水平