2010-05-24 73 views
1

我有一個佈局問題,我無法修復。我瀏覽過這裏的很多帖子,而且我的帖子似乎很獨特,可以發表一個問題。佈局問題:在自定義對話框中的表格內滾動視圖

我創建了一個自定義對話框,它以編程方式創建一個3行表。頂部和底部的行有文本,而中間的行包含一個ScrollView,它包含一個LinearLayout。然後LinearLayout包含一些視圖(本例中爲TextView)。由於我以編程方式執行此操作,請參閱下面的XML僞代碼以及下面的實際代碼。

我想要發生的情況是,當LinearLayout中包含的內容的高度變得太大時,ScrollView將執行其作業,並且頁眉和頁腳TextView始終可見。

問題是,當對話框變得足夠大時,ScrollView似乎佔據了整個對話框,並且我的頁腳TextView從屏幕上消失。 我該怎麼做才能確保頁腳TextView永不消失,但ScrollView仍然可以正常工作?

見下面的圖片鏈接:

頁腳左側可見,走右邊:

http://img690.imageshack.us/i/screenshotss.png/

<TableLayout> 
    <TableRow> 
     <TextView> 
    </TableRow> 
    <TableRow> 
     <ScrollView> 
      <LinearLayout> 
       <TextView/> 
       <TextView/> 
       <TextView/> 
       ... 
      </LinearLayout> 
     </ScrollView> 
    </TableRow> 
    <TableRow> 
     <TextView> 
    </TableRow> 
</TableLayout> 

下面的代碼:

public class DialogScrollTest extends Dialog { 

    public DialogScrollTest(Context ctx){ 
     super(ctx); 

     setTitle(""); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 

     TableLayout table = new TableLayout(ctx);  
     TableRow row;  
     TextView text; 

     row = new TableRow(ctx); 
     { 
      text = new TextView(ctx); 
      text.setText("TestTop"); 
      row.addView(text); 
     } 
     table.addView(row); 

     row = new TableRow(ctx); 
     { 
      ScrollView scroll = new ScrollView(ctx); 
      { 
       LinearLayout linear = new LinearLayout(ctx); 
       linear.setOrientation(LinearLayout.VERTICAL); 
       for(int t=0; t<32; ++t){ 
        text = new TextView(ctx); 
        text.setText("TestScroll"); 
        linear.addView(text);     
       } 
       scroll.addView(linear); 
      }  
      row.addView(scroll); 
     } 
     table.addView(row); 

     row = new TableRow(ctx); 
     { 
      text = new TextView(ctx); 
      text.setText("TestBottom"); 
      row.addView(text); 
     } 
     table.addView(row); 

     this.setContentView(table); 
    } 
} 

回答

1

莫非你只需使用ListView和頁腳或標題或它是一個樣本數據,事實上你正在嘗試做更復雜的事情?

+0

ScrollView中的TextView對象只是樣本 - 我想要使用的實際接口是非常隨意的。所以,它並不能很好地適用於ListView和適配器。 我希望有一些方法可以與中間TableRow進行通信,它的最大尺寸受限於不會強制關閉對話框的底部TableRow,然後ScrollView將不得不解決剩餘空間問題。有沒有人知道設置這種限制的正確方法? – Sean 2010-05-25 15:40:40

+0

此外,當ScrollView包含多個內容頁面時,我可以使用RelativeLayout使其工作。但是,當內容只有幾行時,ScrollView不會縮小以包裝內容。儘管已經設置了WRAP,但這仍然是個問題。我猜RelativeLayout優先。這令人沮喪。 – Sean 2010-05-25 23:12:37

+0

我仍然有一種感覺,即如果您的項目使用相同的佈局(即使它是一個複雜的),ListView可能是一個不錯的選擇。但是我不能自己回答這個問題。對不起... – 2010-05-26 16:42:43