Android - Как ограничить ширину LinearLayout

Я пытаюсь ограничить ширину LinearLayout до 400dp или меньше. Другими словами, если механизм компоновки определяет, что LinearLayout будет 320dp, я не хочу ничего менять, но если он определит, что он будет 480dp, я хочу уменьшить его до 400dp.

Я перепробовал все, что мог придумать, чтобы это произошло. Моя последняя попытка состояла в том, чтобы создать пользовательское представление, унаследованное от LinearLayout, и переопределить метод onMeasure для установки пользовательских измерений, однако проблема, с которой я сталкиваюсь, заключается в том, что, хотя фактическая ширина LinearLayout уменьшает все виды внутри него (то есть: кнопки и т. д.) по-прежнему расположены так, как если бы ширина никогда не менялась, поэтому они обрезаются сбоку.

Если у кого-нибудь есть какие-либо предложения о том, как это сделать, или если он знает о каких-либо приложениях с открытым исходным кодом, которые делают это, я бы очень хотел это рассмотреть.

1 ответ

Решение

Вы должны проверить getMeasuredWidth(), Если это больше, чем вы хотите, setLayoutParams() с правильной шириной. Помните, что в Java единицы измерения представлены в пикселях, поэтому вам необходимо правильно их масштабировать.

Другие вопросы по тегам