以编程方式添加时,复选框的标签未垂直对齐

Checkbox's labels are not vertically aligned when added programmatically

我想垂直对齐 CheckBox 及其 text/labels。

我像这样以编程方式添加复选框:

private LinearLayout ProposalLayout;
ProposalLayout = (LinearLayout) findViewById(R.id.ll_proposals);
this.ProposalLayout = ProposalLayout;

Iterator<Proposal> iter = q.getListProposals().iterator();
while (iter.hasNext()) {
    Proposal p = iter.next();
    CheckBox cb = new CheckBox(activity);
    cb.setText(p.getProposal());
    cb.setId(p.getId());
    ProposalLayout.addView(cb);
}

这是我的布局:

<LinearLayout
        android:id="@+id/ll_proposals"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            android:text="New CheckBox"
            android:id="@+id/checkBox" />

        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:text="New CheckBox"
            android:id="@+id/checkBox2" />
</LinearLayout>

布局中添加的CheckBox很好。第一个以编程方式添加的很好,但其他的不是垂直对齐的(它们的标签)。

编辑: 当我更换时它完全对齐:

cb.setText(p.getProposal());

作者:

cb.setText("test test test");

问题出在 XML 文件中,有一个换行符,我只是在日志中没有看到它。

为您的复选框定义布局参数,然后将它们设置为参数。首先是布局参数:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,     
ViewGroup.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER_VERTICAL;

然后添加视图:

ProposalLayout.addView(cb, params);

试试这个..

在 XML

中将两个 CheckBox 的高度设置为 wrap_content
android:layout_height="70dp"

android:layout_height="wrap_content"

您可以使用 Thomas R 建议的解决方案。它应该有效。或者你可以试试我的:

...
while (iter.hasNext()) {
    ...
    cb.setParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,     
ViewGroup.LayoutParams.WRAP_CONTENT));
    ...
}

并添加

<LinearLayout
     ...
    android:gravity="left">