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