以编程方式添加时,复选框的标签未垂直对齐
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">
我想垂直对齐 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">