Java 创建适合android应用程序屏幕的可重新调整大小的按钮网格

Java 创建适合android应用程序屏幕的可重新调整大小的按钮网格,java,android,android-layout,android-tablelayout,android-gridlayout,Java,Android,Android Layout,Android Tablelayout,Android Gridlayout,我试图创建一个非常简单的按钮网格。我希望这个网格的大小是动态的,也就是说,我希望能够设置它为10x10一天,也许5x5第二天 这意味着我无法在xml文件中创建布局。 到目前为止,我已经尝试使用网格布局或表格布局。这两个都没有达到目的。 我在xml中设置布局,如下所示: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/andr

我试图创建一个非常简单的按钮网格。我希望这个网格的大小是动态的,也就是说,我希望能够设置它为10x10一天,也许5x5第二天

这意味着我无法在xml文件中创建布局。 到目前为止,我已经尝试使用网格布局或表格布局。这两个都没有达到目的。 我在xml中设置布局,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_battle_ship_game"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    tools:context="com.example.admin.simplesimon.battleShip.BattleShipGame"

    android:columnCount="10"
    android:rowCount="10"

    android:layout_gravity="center">

</TableLayout>

然后,我在代码中获得布局并运行一个循环,将tiles插入其中,我的tiles是一个扩展的按钮类

当我尝试使用GridLayout时,我的结果是:

它溢出,我一直无法找到有效的解决方案

当我尝试TableLayout时,我无法(在代码中)设置列数,结果是一列:

这种事情通常是怎么做的? 当然,必须有一种简单的方法来创建大小不断变化的网格。使自己适合屏幕的东西,拉伸或收缩网格/表格的插槽以使其适合。
我看到过一些帖子,内容是在没有足够的瓷砖时,将瓷砖拉伸以填充屏幕,但我找不到相反的解决方案

使用
RecyclerView
GridLayoutManager
可以很容易地实现这一点。这不是为了以网格的形式创建可滚动列表吗?据我所知,回收方面的整个要点是允许非常长的列表,而不会在一个大列表中包含大量的组件。这是真的,但即使组件的数量只适合一个屏幕,事实上这些组件都是完全相同的,使用RecyclerView的代码简单得多,而且是分离的,您将不会像使用cumbersom TableLayout或GridViewYes那样使用更多的资源,但我担心的是,当我想将网格扩大到20X20时会发生什么。它可能不再适合屏幕,然后开始滚动。我要找的是一个布局,它将强制其平铺缩小。为此,您可以扩展ViewGroupd以添加
max\u height
。并将其作为每个回收项目的根。然后设置
maxHeight=recyclerHeight/numRows
。以下是如何实现
max\u height