我有一個佈局問題,我無法修復。我瀏覽過這裏的很多帖子,而且我的帖子似乎很獨特,可以發表一個問題。佈局問題:在自定義對話框中的表格內滾動視圖
我創建了一個自定義對話框,它以編程方式創建一個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);
}
}
ScrollView中的TextView對象只是樣本 - 我想要使用的實際接口是非常隨意的。所以,它並不能很好地適用於ListView和適配器。 我希望有一些方法可以與中間TableRow進行通信,它的最大尺寸受限於不會強制關閉對話框的底部TableRow,然後ScrollView將不得不解決剩餘空間問題。有沒有人知道設置這種限制的正確方法? – Sean 2010-05-25 15:40:40
此外,當ScrollView包含多個內容頁面時,我可以使用RelativeLayout使其工作。但是,當內容只有幾行時,ScrollView不會縮小以包裝內容。儘管已經設置了WRAP,但這仍然是個問題。我猜RelativeLayout優先。這令人沮喪。 – Sean 2010-05-25 23:12:37
我仍然有一種感覺,即如果您的項目使用相同的佈局(即使它是一個複雜的),ListView可能是一個不錯的選擇。但是我不能自己回答這個問題。對不起... – 2010-05-26 16:42:43