Как работает addView () TableRow? - PullRequest
       0

Как работает addView () TableRow?

1 голос
/ 30 декабря 2011

Я пытался

 private void addSnapPictureRow(TableLayout table, Bitmap bitmap) {
        /*
         * 1st row = TextView (Check In)
         */
        TableRow row = new TableRow(this);  
        row.setGravity(Gravity.CENTER_HORIZONTAL);
        // add text
        TextView text = new TextView(this);
        text.setText("Snap Picture");
        TableRow.LayoutParams textLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
        textLayoutParams.setMargins(100, 0, 0, 0);
        row.addView(text, textLayoutParams);

        // add picture
        ImageView picture = new ImageView(this);
        picture.setImageResource(R.drawable.adium);
        row.addView(picture);

        /*
         * 2nd row = View (separator)
         */
        TableRow separator = new TableRow(this);
        View line = new View(this);
        TableRow.LayoutParams separatorLayoutParams = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, 1);
        separatorLayoutParams.setMargins(100, 0, 0, 0);
        line.setBackgroundColor(Color.BLUE);
        separator.addView(line, separatorLayoutParams);

        // add row to table
        table.addView(row);
        // add a separator
        table.addView(separator);
    }

Но картинка так и не появилась. Если я изменю гравитацию на CENTER_HORIZONTAL, то она покажет только небольшую часть изображения.

enter image description here

Когда я создавал таблицу с xml, я думал, что она автоматически выровняется по горизонтали. Я не могу понять, как работает макет TableRow. Может ли кто-нибудь пролить мне свет на это?

1 Ответ

3 голосов
/ 30 декабря 2011

Добавление дополнительных LinearLayout для каждой строки решило мою проблему;).Выравнивание предыдущего ряда приводит к тому, что изображение выходит за пределы экрана.

private void addSnapPictureRow(TableLayout table, Bitmap bitmap) {
        /*
         * 1st row = TextView (Check In)
         */
        TableRow row = new TableRow(this);  
        LinearLayout outerLayout = new LinearLayout(this);
        // add text
        TextView text = new TextView(this);
        text.setText("Snap Picture");
        LinearLayout.LayoutParams textLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        textLayoutParams.setMargins(100, 0, 0, 0);

        // add picture
        ImageView picture = new ImageView(this);
        LinearLayout.LayoutParams pictureLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        picture.setImageResource(R.drawable.adium);
        pictureLayoutParams.setMargins(20, 0, 0, 0);

        outerLayout.addView(text, textLayoutParams);
        outerLayout.addView(picture, pictureLayoutParams);
        row.addView(outerLayout);

        /*
         * 2nd row = View (separator)
         */
        TableRow separator = new TableRow(this);
        View line = new View(this);
        TableRow.LayoutParams separatorLayoutParams = new TableRow.LayoutParams(400, 1);
        separatorLayoutParams.setMargins(100, 0, 0, 0);
        line.setBackgroundColor(Color.BLUE);
        separator.addView(line, separatorLayoutParams);

        // add row to table
        table.addView(row);
        // add a separator
        table.addView(separator);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...