Android 如何删除复选框旁边的额外空间?
首先,我是android开发新手,一些看似简单的任务让我沮丧不已。这是这里所回答问题的后续问题: 它的要点是,出于某种原因,在我的复选框旁边不断显示出这个额外的空间(见下文) 现在,我尝试将宽度设置为1,但它不会比显示的宽度短。我试着把宽度调大一点,我可以把尺寸调大一点,但不能再短一点 请看下面的代码,让我知道你看到了什么Android 如何删除复选框旁边的额外空间?,android,checkbox,android-widget,padding,margin,Android,Checkbox,Android Widget,Padding,Margin,首先,我是android开发新手,一些看似简单的任务让我沮丧不已。这是这里所回答问题的后续问题: 它的要点是,出于某种原因,在我的复选框旁边不断显示出这个额外的空间(见下文) 现在,我尝试将宽度设置为1,但它不会比显示的宽度短。我试着把宽度调大一点,我可以把尺寸调大一点,但不能再短一点 请看下面的代码,让我知道你看到了什么 TableLayout table = (TableLayout) findViewById(R.id.timeEntriesTable); for (
TableLayout table = (TableLayout) findViewById(R.id.timeEntriesTable);
for (int i = 0; i < timeEntries.getLength(); i++)
{
Element element = (Element) timeEntries.item(i);
TableRow tr = new TableRow(this);
tr.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
CheckBox box = new CheckBox(this);
box.setButtonDrawable(getResources().getDrawable(R.drawable.checkbox_off_background));
box.setPadding(0,0,0,0);
box.setWidth(1);
box.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CheckBox box = (CheckBox) v;
if (box.isChecked())
{
box.setButtonDrawable(getResources().getDrawable(R.drawable.checkbox_on_background));
}
else
{
box.setButtonDrawable(getResources().getDrawable(R.drawable.checkbox_off_background));
}
}
});
TextView dateBox = new TextView(this);
String dateText = element.getAttribute("date");
dateBox.setText(dateText);
dateBox.setTextColor(Color.BLACK);
TextView customerBox = new TextView(this);
String customerName = element.getAttribute("customer");
customerBox.setText(customerName);
customerBox.setTextColor(Color.BLACK);
TextView hoursBox = new TextView(this);
String hours = element.getAttribute("hours");
hoursBox.setText(hours);
hoursBox.setTextColor(Color.BLACK);
TextView test = new TextView(this);
test.setTextColor(Color.RED);
test.setText("Test");
tr.addView(box);
tr.addView(dateBox);
tr.addView(customerBox);
tr.addView(hoursBox);
table.addView(tr, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
}
TableLayout table=(TableLayout)findViewById(R.id.timeEntriesTable);
对于(int i=0;i
提前谢谢你 看起来可疑的“时间条目”标题位于标题行中它自己的表单元格中,并且它下面的复选框列与相同的宽度相匹配。(查看文本的右边缘如何与下面的日期完美对齐?)由于复选框的布局重力可能默认为
TOP | LEFT
,因此它位于单元格的左上角
尝试更改标题行或复选框的布局。看起来可疑的“时间条目”标题位于标题行中自己的表格单元格中,其下方的复选框列与相同的宽度相匹配。(查看文本的右边缘如何与下面的日期完美对齐?)由于复选框的布局重力可能默认为
TOP | LEFT
,因此它位于单元格的左上角
尝试更改标题行或复选框的布局。表格布局自然希望所有单元格大小相同。如果您想要一个或多个不同的大小,则需要额外的参数 要缩小单元格中的所有额外空间,请将其添加到表对象中 表.setShrinkAllColumns(真) 或者缩小复选框所在的第一列
table.setColumnShrinkable(int columnIndex,boolean isShrinkable)表格布局自然希望所有单元格大小相同。如果您想要一个或多个不同的大小,则需要额外的参数 要缩小单元格中的所有额外空间,请将其添加到表对象中 表.setShrinkAllColumns(真) 或者缩小复选框所在的第一列
table.setColumnShrinkable(int-columnIndex,boolean-isShrinkable)因此在输入另外两个应答器@adamp和@Phobos之后。我偶然发现了对我有用的东西 加入以下条文:
TableRow.LayoutParams lp = new TableRow.LayoutParams();
lp.width = 15;
lp.setMargins(3, 5, 0, 0);
lp.height = 15;
tr.addView(box, lp);
我能完全按照我的要求调整那个细胞。我觉得很奇怪,它不是在生长细胞的柱,而是在生长复选框本身。这是因为Android中没有实际的单元格,它使用视图及其大小生成表
我没有遇到任何教程或任何让您以编程方式设置LayoutParams的内容。感谢您帮助解决此问题 所以在其他两位回答者@adamp和@Phobos的输入之后。我偶然发现了对我有用的东西 加入以下条文:
TableRow.LayoutParams lp = new TableRow.LayoutParams();
lp.width = 15;
lp.setMargins(3, 5, 0, 0);
lp.height = 15;
tr.addView(box, lp);
我能完全按照我的要求调整那个细胞。我觉得很奇怪,它不是在生长细胞的柱,而是在生长复选框本身。这是因为Android中没有实际的单元格,它使用视图及其大小生成表
我没有遇到任何教程或任何让您以编程方式设置LayoutParams的内容。感谢您帮助解决此问题 我试过了,我认为它不起作用,因为标题行跨越了所有列,所以它收缩到了这一点,而不是第二行中更小的列。然而+因为我不知道