Android: Tablerow многострочное обрезка текста вертикально - PullRequest
4 голосов
/ 30 декабря 2011

Я динамически добавляю строки с двумя столбцами в таблицу. В одном из столбцов содержится текст, который будет разбит на несколько строк. Я добавил вес в параметры макета для textview, чтобы он больше не обрезался за пределами экрана, но, похоже, он ограничен двумя с половиной строками в таблице, независимо от длины многострочного текста. Таблица только определена в xml, а все остальное выполняется программно.

    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT);
    TableRow.LayoutParams paramsStar = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT);
    paramsStar.setMargins(0,0,40,0);
    TableRow.LayoutParams paramsText = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.FILL_PARENT, (float)1.0);

    TableRow tr = new TableRow(this);
    tr.setLayoutParams(rowParams);

    TextView viewStar = new TextView(this);
    viewStar.setTextSize((float) 30.0);
    viewStar.setText("*");
    viewStar.setLayoutParams(paramsStar);
    viewStar.setTypeface(Typeface.DEFAULT_BOLD, 2);

    TextView viewText = new TextView(this);
    viewText.setText("Long multiline text piece"); //<--- Here the long text goes
    viewText.setLayoutParams(paramsText);

    tr.addView(viewStar);
    tr.addView(viewText);
    table.addView(tr, rowParams);

Как мне исправить это вертикальное отсечение? Скриншот проблемы ниже:

Вот ссылка, показывающая проблему

Ответы [ 2 ]

1 голос
/ 01 января 2012

Я нашел корень проблемы. В первом столбце значения textize сделан многострочный текстовый клип. Если я уменьшу размер текста, проблема исчезнет. Хотя я не могу объяснить, почему.

0 голосов
/ 06 сентября 2013

Еще один ответ, который я здесь добавлю: Android измеряет высоту строк таблицы очень неинтуитивно. Если у вас есть 2 TextView (ов), по одному на каждый столбец TableRow, вам нужно убедиться, что верхний и нижний отступы, которые вы установили для первого TextView, установлены одинаково для 2-го TextView, иначе вы получите странные вещи, такие как контент отсечение и странное позиционирование 2-го TextView.

...