Java Android:指定TableRows的大小

Java Android:指定TableRows的大小,java,android,layout,size,Java,Android,Layout,Size,我一直在尝试创建一个简单的布局。这是一个3x3的网格,下面有一个文本视图。 我使用TableLayout来设置ImageButtons,TextViewTextView的布局为3。 问题是在横向模式下,我看不到文本视图 我试图给表格行添加一些权重,但这解决了横向模式造成的另一个问题:在纵向模式下,按钮之间有巨大的空间 我试图创建的是一个滴答作响的游戏,所以我希望按钮紧凑 我怎样才能获得这样的效果?我希望Textview占据所有剩余的垂直空间,我希望它即使在横向模式下也可见 有什么解决办法吗 这是

我一直在尝试创建一个简单的布局。这是一个3x3的网格,下面有一个文本视图。 我使用TableLayout来设置ImageButtons,TextViewTextView的布局为3。 问题是在横向模式下,我看不到文本视图

我试图给表格行添加一些权重,但这解决了横向模式造成的另一个问题:在纵向模式下,按钮之间有巨大的空间

我试图创建的是一个滴答作响的游戏,所以我希望按钮紧凑

我怎样才能获得这样的效果?我希望Textview占据所有剩余的垂直空间,我希望它即使在横向模式下也可见

有什么解决办法吗

这是xml代码:

<?xml version="1.0" encoding="utf-8"?>

<!--suppress AndroidDomInspection -->
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="#000000"
              android:stretchColumns="*">
    <TableRow android:layout_margin="2dip"
              android:background="#000000">
        <ImageButton android:id="@+id/z_z" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
        <ImageButton android:id="@+id/z_o" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
        <ImageButton android:id="@+id/z_t" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
    </TableRow>
    <TableRow android:layout_margin="2dip"
              android:background="#000000">
        <ImageButton android:id="@+id/o_z" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
        <ImageButton android:id="@+id/o_o" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
        <ImageButton android:id="@+id/o_t" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
    </TableRow>
    <TableRow android:layout_margin="2dip"
              android:background="#000000">
        <ImageButton android:id="@+id/t_z" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
        <ImageButton android:id="@+id/t_o" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
        <ImageButton android:id="@+id/t_t" android:layout_margin="3dip"
                     android:layout_height="wrap_content"
                     android:layout_width="wrap_content"
                     android:src="@drawable/empty"
                     android:background="#ffffff"/>
    </TableRow>
    <TableRow>
        <TextView android:id="@+id/message_txt_view"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="@string/how_to_play"
                  android:textSize="@dimen/message_size"
                  android:layout_span="3"/>

    </TableRow>

</TableLayout>
编辑: 我已经了解了如何使用权重,但我认为这实际上并不能解决我的问题,因为在不同的屏幕尺寸上,网格的格式仍然不正确。 我真正想做的是在布局代码中使用屏幕大小。 这样,我就可以使用适合它的砝码

也许我可以为每一个屏幕尺寸指定不同的布局,我一两天前读过类似这样的东西,但这会有点无聊。而且如果我改变布局,我会有很多文件要更新

也许有一种方法可以将TableLayout高度设置为包裹内容,同时将TextView高度设置为填充父项,占用所有可能的空间来显示网格?
这将真正解决我的问题,为每一个屏幕大小

使用您提到的权重为横向模式创建不同的布局,并保持纵向模式不变


要使用它,只需将两个布局命名为相同的名称。将纵向布局放在常规布局目录中,将横向布局放在新的布局目录中。

Ops!我认为这还不是解决方案,因为我注意到在不同的屏幕尺寸下,即使使用权重,这种情况也可能再次发生。有没有办法告诉TextView尽可能占据所有垂直空间?也许你可以使用weightSum来实现这一点,但我无法正确地实现。例如,在开发者网站re:weights中,如果有三个文本框,其中两个声明权重为1,而另一个没有权重0,那么第三个没有权重的文本框将不会增长,只会占据其内容所需的区域。在测量完所有三个盒子后,其他两个盒子将相等地膨胀以填充剩余的空间。因此,将textview的tablerow的权重设置为1,将其他的默认值设置为0,textview行应该扩展以填充可用空间。