Переопределение кнопки в Android, изменение макета - PullRequest
0 голосов
/ 19 октября 2019

В моем проекте Button добавляется в представление динамически и количество кнопок также неизвестно. Чтобы нести эти кнопки, я создал linearlayout(horizonatal). Проблема заключается в том, что когда кнопка превысила несколько пределов (скажем, 5), тогда кнопка 6 не будет рисовать на экране, я не хочу прокручивать, я хочу, чтобы все кнопки на экране, не имеет значения, будут ли кнопки создаваться под уже созданными кнопками. Как этого добиться. Как узнать, что экран заполнен кнопками?

1 Ответ

0 голосов
/ 20 октября 2019

Похоже, вам придется динамически отслеживать, сколько места на экране занимают кнопки, исходя из высоты и, возможно, ширины экрана. Чтобы получить размер экрана в пикселей , вы можете сделать что-то вроде

 Display display = getWindowManager().getDefaultDisplay();
 Point size = new Point();
 display.getSize(size);
 int width = size.x;
 int height = size.y;

или

DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

// displayMetrics.heightPixels will give you the height
// displayMetrics.widthPixels will give you the width

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

Если вам нужен размер в dp , вы можете разделить значения из displayMetrics.heightPixels или displayMetrics.widthPixels на плотность

float dp = displayMetrics.heightPixels/displayMetrics.density

...