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

时间:2015-09-28 12:09:06

标签: android label center vertical-alignment android-checkbox

我希望垂直对齐CheckBox及其文字/标签。

我以编程方式添加复选框,如下所示:

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文件中,有一个换行符,我只是没有在日志中看到它。

3 个答案:

答案 0 :(得分:0)

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

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

然后添加视图:

ProposalLayout.addView(cb, params);

答案 1 :(得分:0)

试试这个..

在XML

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

android:layout_height="wrap_content"

答案 2 :(得分:0)

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

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

并添加

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