2013-05-20 89 views
1

我有一個線性佈局,並且必須在此Linearlayout中在運行時膨脹可變數量的按鈕。現在我的問題是,當我給這個線性佈局的方向。如果我給它橫向或垂直造成問題。將與例子解釋一下: -Android線性佈局和可變數量的按鈕

例1:輸入是3個按鈕

預期輸出:Button1的Button2的將Button3(如果所有3個裝配在完全一行)

所有的三個按鈕應該被顯示在這個線性佈局和相同的線條(就像水平線),只要它們完全適合。

爲Eg2:輸入是4個按鈕,它們不適合於整行

預期輸出: - 線路1: - Button1的Button2的(假設將Button3未完全在這一行配合)

   Line2:- Button3 Button4 

目前如果我將LinearLAyout的方向設置爲「水平」,那麼它將強制所有4個按鈕放在一行中,並且UI會變得糟糕。如果我將方向定爲垂直,情況也是如此。

有人可以告訴我如何在運行時處理這個問題,以便只有一個完整的按鈕顯示在一行中,並且它遍佈多行。一些通用的方式來處理這種情況。

佈局可以考慮這樣的事情對於靜態目的: -

<LinearLayout 
android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:orientation="horizontal"> 
    <Button 
    android:id="@+id/button_1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="YYYYYYYYYYYOOOOOOOOOOOOO"   
    android:textSize="75sp"/> 
    <Button 
    android:id="@+id/button_2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="AAAAAAFFFFFFFFFFGGGGGGGGG"   
    android:textSize="75sp"/> 

</LinearLayout> 

回答

0

LinearLayout不能這樣工作。它將垂直或水平佈局項目(不包裝)。你有幾個選擇。

它聽起來像你的按鈕將會是不同的大小(所以你可能不想使用gridview),你可以創建垂直LinearLayout,其中包含幾個Horizo​​ntalLinearLayouts(反過來按住按鈕)。

或者,您可以推出自己的自定義ViewGroup。這兩種方法都會要求您編寫計算邏輯,以確定哪些行適合。您的自定義視圖組最終可能會更乾淨,但需要更多關於視圖的知識。

0

我的理解是,你需要動態加載的觀點n個和你希望你的意見將被自動結轉你的父視圖。我認爲你需要的僅僅是一個帶有簡單適配器的gridview。你的gridview的「單元格」將是你的案例中的按鈕。這裏有很多關於它的信息。這是從谷歌提供的簡單指南。

http://developer.android.com/guide/topics/ui/layout/gridview.html

希望我幫你。 此致敬禮。