【问题标题】:relative layout merging two textviews合并两个文本视图的相对布局
【发布时间】:2012-12-10 15:31:25
【问题描述】:

我有一个相对布局,其中 textview 排列在一列以上。单击屏幕时,有一个“弹出屏幕”或“输入屏幕”(不知道如何调用),其中我定义了“从”和“到”的时间,学校班级的名称等。它将计算它需要从该输入合并哪些文本视图。合并的文本视图必须像一个更大的文本视图。有可能做这样的事情吗?

感谢前面的回答。

类似这样的: http://i.stack.imgur.com/r1o8D.png

【问题讨论】:

  • 新窗口?这有点模棱两可。你想让你的表出现在对话框中吗?在布局中?在运行时以编程方式创建?你已经写了它会计算所以我假设你的表需要是动态的?您能否编辑问题
  • @CarlSaldanha 已编辑。现在更清楚了?我什至有了一个想法,通过改变他的高度,以编程方式将一个文本视图转换为更大的文本视图。
  • 不是像这样创建文本视图,您不能只为每列创建一个文本视图。并转到下一行换行?您可以使用自定义视图绘制线条
  • @CarlSaldanha 定义的文本视图可以跨越多于一行,并且在定义输入后必须对它们进行着色。任何代码将不胜感激。并感谢您的想法。

标签: android merge textview android-relativelayout


【解决方案1】:

我有一个想法,您可以尝试创建一个自定义视图来绘制它而不是使用视图。

在一个新类中扩展 View 类并覆盖 onDraw 方法。

//variables
Paint paint[]; //Set up these paints with the colors you need
int rowWidth, int colHeight;
void onDraw(Canvas c){
    for(int i=0;i<noOfRows;i++){
       for(int j=0;j<noOfColumns;j++){
            if(cellRequired(i,j)){
              //cellRequired will be whatever logic you have to check if cell is required

                int rectHeight=colHeight; //Now the Rect Height changes whether the cell
                                         //  below is in use or not.
                for(int k=i;k<noOfRows;k++){                         
                     //This loop will run through the rows and see if merging is required
                      if(cellRequired(i,k))
                             rectHeight+=colHeight; //Merge Cell
                      else 
                              break; //If not required at any point break loop
                 }
                 //Draw Rectangle background
                 c.drawRect(i*rowWidth +i, j*colHeight +j, rowWidth, rectHeight, backPaint);
                 //Draw Text
                 canvas.drawText("Text",i*rowWidth +i, j*colHeight +j, paint[requiredPaint]);
                 //I added the plus i and plus j so there'd be a gap in the rectangles
                 // Then it will be a border
            }         
       }
    }
}

关于自定义控件的 Android 文档 你

Android: Tutorial on Custom View creation

如何制作类似于上面的自定义视图

http://www.droidnova.com/playing-with-graphics-in-android-part-i,147.html

浏览这些,然后浏览上面的代码。希望它应该向您展示如何实现它。

【讨论】:

  • 您的意思是,每列一个自定义视图?将研究有关自定义视图的更多信息并将回来。谢谢你的帮助,现在:)
  • 实际上这个自定义视图绘制了整个表格...行列合并单元格..多种文本颜色..一切。查看代码。看看它是否适合你
  • 当那个自定义视图绘制了我需要的所有东西时,下次我启动应用程序时,它会是一样的还是会重新启动为空白?你能用更多的代码告诉我你的想法吗?我会非常感谢你。不过,非常感谢您的帮助,即使您现在没有时间进一步帮助我。
  • 我很困惑。上面的自定义视图将允许您使用合并视图绘制表格。从哪里获取数据以绘制表格是您的事。有一个方法 cellRequired(i,j)。我没有具体说明。如果需要单元格,它是您必须实现的方法。明白了还是你还在困惑?每次启动应用程序时,您都必须获取数据并将其放入,就像您对当前 Activity 所做的那样(如果您喜欢答案,请点赞)
  • 我显然是新手,所以这一切仍然令人困惑。如果您可以为我制作一些代码示例,以便我可以在工作中看到它,那就更好了。谢谢。