在固定宽度 LinearLayout 中对齐 child
Aligning child in fixed width LinearLayout
我无法在使用固定宽度的 LinearLayout
中 center-align child。据我所知,这应该可以通过在 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
所以应该可以对齐它。它的 parent LinearLayout
使用 200 像素的固定宽度和 gravity
设置为 Gravity.CENTER
。不过,它没有 center-aligned,但复选框总是出现在 LinearLayout
的左侧,而不是中间。
有人知道那里出了什么问题吗?
为了回答我自己的问题,设置 params.gravity
是错误的,因为这对应于 hbox
在其父项中的对齐方式。不过,我想要的是设置 hbox
的子项的对齐方式,所以它必须是这样的:
params = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT);
hbox.setLayoutParams(params);
hbox.setGravity(Gravity.CENTER);
然后就可以了。
我无法在使用固定宽度的 LinearLayout
中 center-align child。据我所知,这应该可以通过在 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
所以应该可以对齐它。它的 parent LinearLayout
使用 200 像素的固定宽度和 gravity
设置为 Gravity.CENTER
。不过,它没有 center-aligned,但复选框总是出现在 LinearLayout
的左侧,而不是中间。
有人知道那里出了什么问题吗?
为了回答我自己的问题,设置 params.gravity
是错误的,因为这对应于 hbox
在其父项中的对齐方式。不过,我想要的是设置 hbox
的子项的对齐方式,所以它必须是这样的:
params = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT);
hbox.setLayoutParams(params);
hbox.setGravity(Gravity.CENTER);
然后就可以了。