android中Tablelayout一行只显示一个控件且沾满整行怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中Tablelayout一行只显示一个控件且沾满整行怎么办相关的知识,希望对你有一定的参考价值。

参考技术A 建议TableRow下不要再放布局。TableRow可以设置列数或自动缩放等属性。
要获取LinearLayout的height可以给该LinearLayout设置一个id,通过id得到LinearLayout对象,就可以getHeight()取得height的值。
------------------------------------------------------------------------
我现在给LinearLayout赋了Id属性而且用findViewById获得了对象但是用getHeight()后获得值是-2。如何获得其正确值?

获取的值是跟你设置有关的,如果你的LinearLayout的height设置是fill_content或wrap_content,当然是取得-1或-2.如果你给其指定一个值,就可以获取得到。
一般上都是通过layout.getLayoutParams().height = 50;修改LinearLayout的值。也可以直接在xml文件中修改。追问

不是嵌套布局,是放一个控件,比如编辑框,我想它是布满一行的,可是它只在嗲一个单元格里,该怎么办?

参考技术B 你说些什么我不懂

android实现复杂table表格合并单元格?

android怎么实现这样的表格?

可以通过Tablelayout布局的layout_span属性实现,layout_span指定该单元格占据的列数

1、Tablelayout简介

       Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。 当为View时,该View将独占一行。

2、TableLayout行列数的确定

           TableLayout的行数由开发人员直接指定,即有多少个TableRow对象(或View控件),就有多少行。

        TableLayout的列数等于含有最多子控件的TableRow的列数。如第一TableRow含2个子控件,第二个TableRow含3个,第三个TableRow含4个,那么该TableLayout的列数为4.

3、TableLayout可设置的属性详解

TableLayout可设置的属性包括全局属性及单元格属性。

单元格属性,有以下2个参数:

android:layout_column    指定该单元格在第几列显示

android:layout_span        指定该单元格占据的列数(未指定时,为1)

示例:

android:layout_column="1"    该控件显示在第1列
android:layout_span="2"        该控件占据2列

4、一个TableLayout布局的实例

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"  
    android:layout_  
    android:layout_  
    android:padding="3dip"  
    >  
    <!-- 1个TableLayout,用于描述表中单元格的属性,包括:android:layout_column 及android:layout_span-->  
    <TextView   
        android:text="表:单元格设置:指定单元格属性设置"  
        android:layout_   
        android:layout_  
        android:textSize="15sp"  
        android:background="#7f00ffff"/>   
    <TableLayout  
        android:id="@+id/table2"  
        android:layout_  
        android:layout_  
        android:padding="3dip">  
        <TableRow>  
            <Button android:text="第0列"/>  
            <Button android:text="第1列"/>  
            <Button android:text="第2列"/>  
        </TableRow>  
          
        <TableRow>  
            <TextView android:text="我被指定在第1列" android:layout_column="1"/>  
        </TableRow>  
              
        <TableRow>  
            <TextView  
                android:text="我跨1到2列,不信你看!"  
                android:layout_column="1"  
                android:layout_span="2"  
                />  
        </TableRow>  
          
    </TableLayout>
参考技术A 看你列数固定否,我做过类似项目,简单的方法如下:
1、表格行、列固定的,你每个单元格当成一个TextView,中间的表格线也是TextView,你懂得。像最左侧的合并3行的单元格可以用线性布局为控制。
2、表格列数不定的,表头用TextView做好固定的,下边放一个ListView,ListView的每一行用固定的格式,格式文件的写法同上。
明白吧,有不明白的我再补充。追问

列是固定的,行也固定,以周为单位,从周一到周日

第一种方法我也试过,但是布局文件得写很多,有将近两千行代码,效率低,而且还不能自适应屏幕和分辨率,如图:

第二种方法没试,ListView怎么实现合并单元格,方便留下QQ吗,我加你,向你请教一下,谢谢啊!有实现的具体例子吗?或者相关的参考资料也行!我的邮箱:lanras@163.com

追答

我的QQ1802798025,欢迎讨论。项目有保密协议,我不敢发。我们可以QQ上讨论。
ListView对每一行显示的内容也是通过一个XML布局显示的,你这个表格,一周中的某一天对应着3行,而这3行是重复7次,你可以把这重复的内容写成一个XML,然后在ListView的Adapter里往进放对应的数据。

本回答被提问者采纳

以上是关于android中Tablelayout一行只显示一个控件且沾满整行怎么办的主要内容,如果未能解决你的问题,请参考以下文章

TableLayout(表格布局)

android:TableLayout表格布局详解

android实现复杂table表格合并单元格?

Android 布局之TableLayout

android的:tableLayout和gridview有啥不同

具有在android中对齐的相应标签的radiogroup的TableLayout