【发布时间】:2018-05-12 11:02:24
【问题描述】:
我无法在使用固定宽度的LinearLayout 中将子元素居中对齐。据我所知,这应该可以通过在LinearLayout 上设置gravity 标志来实现,但它似乎不起作用。
代码如下:
LinearLayout hbox = new LinearLayout(getContext());
hbox.setOrientation(LinearLayout.HORIZONTAL);
TypedValue typedValue = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.listChoiceIndicatorMultiple, typedValue, true);
CheckedTextView ctv = new CheckedTextView(getContext());
ctv.setCheckMarkDrawable(typedValue.resourceId);
params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
ctv.setLayoutParams(params);
hbox.addView(ctv);
params = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
hbox.setLayoutParams(params);
如您所见,CheckedTextView 使用WRAP_CONTENT,因此应该可以对齐它。它的父 LinearLayout 使用 200 像素的固定宽度,gravity 设置为 Gravity.CENTER。不过,它不是居中对齐的,但复选框始终出现在 LinearLayout 的左侧,而不是居中。
有人知道那里出了什么问题吗?
【问题讨论】:
标签: android android-layout android-linearlayout