2012-12-05 38 views
0

我有一個相對的佈局,文本視圖在多於一列中排序。當在屏幕上點擊時,有一個「彈出屏幕」或「輸入屏幕」(不知道它是如何稱呼的),我在其中定義時間「from」和「to」,學校課程的名稱是什麼等。將根據該輸入計算它需要合併哪些文本瀏覽。合併文本視圖必須像一個更大的文本視圖。是否有可能做這樣的事情?合併兩個文本視圖的相對佈局

感謝您在未來的答案。

事情是這樣的: http://i.stack.imgur.com/r1o8D.png

+0

新窗口?這有點模棱兩可。你想要一個對話框中的表嗎?在佈局?在運行時以編程方式創建? 你寫過它會計算所以我假設你的表需要動態?您可以編輯編輯問題 – cjds

+0

@CarlSaldanha編輯。現在更清楚了嗎?我甚至有了一個想法,通過改變他的身高,將一個文本視圖編程轉換爲一個更大的文本視圖。 – Beemo

+0

而不是像這樣創建textview,你不能只爲每列創建一個文本視圖。然後去下一行查看新行?您可以使用自定義視圖繪製線條 – cjds

回答

0

我有一個想法,你可以嘗試創建一個自定義視圖,而不是畫使用視圖這一點。

在新類中擴展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

經歷這些,然後通過上面的代碼。希望它能告訴你如何實現它。

+0

你是說,每列有一個自定義視圖?將研究更多關於自定義視圖,並會回來。感謝您的幫助,現在:) – Beemo

+0

其實這個自定義視圖繪製整個表...行列合併單元格..多個文本顏色..一切。檢查代碼。看看它是否適合你 – cjds

+0

當自定義視圖繪製我需要的所有東西時,下次啓動應用程序時,它將會是相同的,否則它將重新啓動爲空白。你能用更多的代碼向我展示你的想法嗎?我會非常感謝你。儘管如此,即使你現在沒有時間幫助我進一步,也非常感謝你的幫助。 – Beemo