Android GridLayout从API 24开始不可见

时间:2018-06-11 23:34:06

标签: android android-gridlayout

如果我使用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。然后我将另一个Textfield添加到LinearLayout。会发生什么是绘制了另一个Textfield,但GridLayout仍然没有。所以它是一个非常具体的问题GridLayout< - > API> 23

编辑:哦,无论多么有趣,其他TextField都添加在底部,因此GridLayout元素似乎阻止了正确的空间而不仅仅是0px ...

感谢您的任何建议,我已经尝试了谷歌搜索并测试了5个小时。

最好的, wwhite

0 个答案:

没有答案