Android GridLayout невидимый, начиная с API 24

97
8

если я использую target-sdk = "23", все в порядке. все выше, поэтому, начиная с "24", у меня проблема с тем, что мой GridLayout (а не GridView) вообще не отображается (приложение не сбой или сообщение об ошибке). Он просто остается невидимым.

Внутри CHelper-класса:

    public static GridLayout.LayoutParams lParamsGrid = new GridLayout.LayoutParams(GridLayout.spec(GridLayout.UNDEFINED,GridLayout.FILL, 1f), GridLayout.spec(GridLayout.UNDEFINED,GridLayout.FILL, 1f));
public static GridLayout layoutGrid = null;

public static void init(Activity a_)
{
CHelper.layoutGrid = new GridLayout(a_);
lParamsGrid.setGravity(Gravity.FILL_HORIZONTAL | Gravity.FILL_VERTICAL);
}

Позже:

CHelper.layoutGrid.setOrientation(GridLayout.VERTICAL);
CHelper.layoutGrid.setLayoutParams(CHelper.lParamsGrid);
CHelper.setPaddingLeft(CHelper.layoutGrid, defaultMarginLeft);
final int rowCount = 5;
final int colCount = 2;
CHelper.layoutGrid.setColumnCount(colCount);
CHelper.layoutGrid.setRowCount(rowCount + 1);

Добавление, например, TextView:

    GridLayout.LayoutParams lp2 = new GridLayout.LayoutParams(GridLayout.spec(0,1), GridLayout.spec(0, 2));
lp2.setGravity(Gravity.FILL_HORIZONTAL | Gravity.FILL_VERTICAL);
textHeading.setGravity(Gravity.CENTER);

CHelper.layoutGrid.addView(textHeading, lp2);

в конце концов:

setContentView(CHelper.layoutGrid, CHelper.lParamsGrid);

Это минимальный пример. Здесь я снял ненужные вещи.

Может ли кто-нибудь сказать мне, почему это работает с api 23, но ничего не делает на api 24? Что-то с весом/шириной? Что я могу попробовать? Обратите внимание, что я уже пытался инкапсулировать GridLayout в LinearLayout и использовать это как ContentView. Затем я добавил еще одно текстовое поле в LinearLayout. Случается, что другое текстовое поле рисуется, но все же ничего не происходит из GridLayout. Так что это очень специфическая проблема GridLayout <-> api> 23

edit: О, как бы интересен, другой TextField добавлен внизу, поэтому элемент GridLayout, похоже, блокирует правильное пространство и не просто 0px...

спасибо за любые советы, я пробовал поиск и тестирование на 5 часов.

лучший, wwhite

спросил(а) 2018-06-12T02:34:00+03:00 2 года, 3 месяца назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема