Как убрать это лишнее место рядом с флажком? - PullRequest
0 голосов
/ 08 марта 2011

Во-первых, я новичок в разработке для Android, и некоторые, казалось бы, легкие задачи разочаровывают меня до бесконечности.Это ответ на вопрос к ответу, приведенному здесь: Изменение размера флажка в Android 2.0

Суть в том, что по какой-то причине появляется это дополнительное пространство, которое продолжает появляться в следующемна мои флажки (см. ниже).

Space Next to checkboxes

Теперь я попытался установить ширину 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));
        }

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 08 марта 2011

Итак, после ввода двух других ответчиков @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. Спасибо за вашу помощь в устранении неполадок!

2 голосов
/ 08 марта 2011

Это выглядит подозрительно, как будто заголовок «Записи времени» находится в отдельной ячейке таблицы в строке заголовка, а столбец флажков под ним соответствует той же ширине. (Посмотрите, как правый край текста идеально совпадает с датой под ним?) Поскольку флажок layout_gravity, вероятно, по умолчанию равен TOP|LEFT, он располагается в левом верхнем углу ячейки.

Попробуйте изменить либо строку заголовка, либо layout_gravity флажков.

1 голос
/ 08 марта 2011

Таблица макетов, естественно, хочет, чтобы все ячейки были одинакового размера. Если вы хотите, чтобы один или несколько размеров были разных размеров, это требует дополнительных параметров.

Чтобы уменьшить все лишнее пространство в ваших ячейках, добавьте это к вашему объекту таблицы

table.setShrinkAllColumns (истина);

Или просто уменьшить первый столбец, где установлен флажок

table.setColumnShrinkable (int columnIndex, логическое isShrinkable)

...