Центр зрения в Android после изменения его свойств ширины

Я изменяю ширину вида сетки в зависимости от ширины столбца и количества столбцов (что работает):

gridView.setLayoutParams(new LinearLayout.LayoutParams(gridManipulation.getColumnWidth() * (int)Math.sqrt(str.length) + 10, LayoutParams.FILL_PARENT));
gridView.setGravity(Gravity.CENTER);

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

2 ответа

Решение

Установить Gravity как LayoutParams свойство затем установить, что LayoutParams на ваш GridView следующее...

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(gridManipulation.getColumnWidth() * (int)Math.sqrt(str.length) + 10, LayoutParams.FILL_PARENT);
params.gravity = Gravity.CENTER;

gridView.setLayoutParams(params);

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

он расширяется по вертикали, по горизонтали или в обоих направлениях? я бы рекомендовал поместить его в прокрутку.

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