Android 如何删除复选框旁边的额外空间?

Android 如何删除复选框旁边的额外空间?,android,checkbox,android-widget,padding,margin,Android,Checkbox,Android Widget,Padding,Margin,首先,我是android开发新手,一些看似简单的任务让我沮丧不已。这是这里所回答问题的后续问题: 它的要点是,出于某种原因,在我的复选框旁边不断显示出这个额外的空间(见下文) 现在,我尝试将宽度设置为1,但它不会比显示的宽度短。我试着把宽度调大一点,我可以把尺寸调大一点,但不能再短一点 请看下面的代码,让我知道你看到了什么 TableLayout table = (TableLayout) findViewById(R.id.timeEntriesTable); for (

首先,我是android开发新手,一些看似简单的任务让我沮丧不已。这是这里所回答问题的后续问题:

它的要点是,出于某种原因,在我的复选框旁边不断显示出这个额外的空间(见下文)

现在,我尝试将宽度设置为1,但它不会比显示的宽度短。我试着把宽度调大一点,我可以把尺寸调大一点,但不能再短一点

请看下面的代码,让我知道你看到了什么

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的内容。感谢您帮助解决此问题

我试过了,我认为它不起作用,因为标题行跨越了所有列,所以它收缩到了这一点,而不是第二行中更小的列。然而+因为我不知道