Первая часть вашего вопроса странная: вы говорите о списке, и вы хотите, чтобы первый элемент взял 20% от полного списка. Вы должны добавить рисунок, чтобы помочь нам понять, что это будет означать.
Вторая часть вашего вопроса говорит о таблице. Это легко. Если вы посмотрите в официальной документации, вы найдете ответ на вопрос How to change width of single column of table?
Вы можете установить относительную ширину, используя метод setWidths()
. В вашем случае, вы бы:
int columns = 8;
float[] widths = new float[columns];
float[0] = 20f;
for (int i = 1; i < columns; i++)
float[i] = 80/(columns - 1);
PdfPTable table = new PdfPTable(columns);
table.setWidths(widths);
Изменение 8
в любой номер, который вы хотите, если вам нужно больше или меньше, чем 8 столбцов.
Update:
В то же время, вы выяснили, ваш вопрос.
Предположим, что у вас есть float[]
с именем widths1
, который содержит ширину таблицы. Обратите внимание, что вам понадобится float
вместо int
, потому что мы собираемся сделать дивизии.
В этом случае, вы можете сделать это:
int n = widths1.length;
float total = 0;
for (int i = 0; i < n; i++)
total += widths1[i];
n++;
float[] widths2 = new float[n];
widths2[0] = total/4;
for (int i = 1; i < n; i++)
widths2[i] = widths1[i - 1];
PdfPTable table = new PdfPTable(n);
table.setWidths(widths2);
Показать код неудовлетворительную, так что мы можем сказать вам, как вы делаете это неправильно. – user3185569
Вопрос не совсем ясен. Было бы здорово, если бы вы добавили текущий код или как выглядит список и как он будет после операций –
еще нет кода, я не могу даже создать какое-либо уравнение @ user3185569 – Charlie