Android 在固定宽度线性布局中对齐子对象
我无法将使用固定宽度的Android 在固定宽度线性布局中对齐子对象,android,android-layout,android-linearlayout,Android,Android Layout,Android Linearlayout,我无法将使用固定宽度的线性布局中的子对象居中对齐。据我所知,这应该可以通过在线性布局上设置重力标志来实现,但它似乎不起作用 代码如下: LinearLayout hbox = new LinearLayout(getContext()); hbox.setOrientation(LinearLayout.HORIZONTAL); TypedValue typedValue = new TypedValue(); getC
线性布局中的子对象居中对齐。据我所知,这应该可以通过在线性布局上设置重力
标志来实现,但它似乎不起作用
代码如下:
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\u内容
,因此应该可以对齐它。其父级LinearLayout
使用200像素的固定宽度,并将gravity
设置为gravity.CENTER
。尽管如此,它并没有居中对齐,但复选框始终显示在线性布局的左侧,而不是居中
有人知道哪里出了问题吗?回答我自己的问题,设置参数。重力
是错误的,因为这对应于其父对象内的hbox
对齐。但是,我想要的是设置hbox
的子对象的对齐方式,因此必须如下所示:
params = new LinearLayout.LayoutParams(200, LayoutParams.WRAP_CONTENT);
hbox.setLayoutParams(params);
hbox.setGravity(Gravity.CENTER);
然后它就起作用了