【问题标题】:Checkbox's labels are not vertically aligned when added programmatically以编程方式添加时,复选框的标签未垂直对齐
【发布时间】:2015-12-25 16:10:06
【问题描述】:

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

【问题讨论】:

  • “不垂直对齐(他们的标签)”是什么意思?你需要什么对齐方式?
  • 我的意思是复选框与标签对齐,在同一行。
  • 哦,我以为您的意思是左对齐、居中或右对齐。您可以添加未对齐复选框的屏幕截图吗? getProposal() 方法有什么问题?请提供它的源代码。
  • Proposal.getProposal()返回的文本示例。

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


【解决方案1】:

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

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

然后添加视图:

ProposalLayout.addView(cb, params);

【讨论】:

  • 刚刚完成,但标签仍未对齐。
  • 好的,然后在您的迭代器代码中尝试 cb.setGravity(CENTER_VERTICAL)。
  • 如果您需要将标签左对齐,请将Gravity.CENTER_VERTICAL 替换为Gravity.LEFT
  • “p.getProposal()”中是否有换行符?
  • @ThomasR。不,我也是这么想的。
【解决方案2】:

试试这个..

在 XML 中将 CheckBoxs 的高度设置为 wrap_content

android:layout_height="70dp"

android:layout_height="wrap_content"

【讨论】:

  • 这两个CheckBox 仅用于测试。它们正确显示并且它们的标签垂直对齐。我想对齐以编程方式添加的那些。
【解决方案3】:

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

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

并添加

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

【讨论】:

  • Thomas R. 建议的解决方案不起作用,不幸的是您的解决方案。
猜你喜欢
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-31
  • 2016-06-24
  • 2016-01-25
  • 2012-04-06
  • 2017-10-02
相关资源
最近更新 更多