2015-03-31 79 views
0

有沒有什麼方法可以創建一個水平佈局的wrap_content,如果行已滿,則將其餘行放在新行中。佈局如何適應水平和垂直的內容?

例如:

如果創建與方向設置爲水平方向,然後創建三個按鈕填充屏幕尺寸(按鈕)(按鈕)(按鈕)的線性佈置,現在如果我添加更多的按鈕將被置於在線的末尾以一種非常醜陋的方式。我想要的是將新按鈕放在新行中,並且我不想創建多個佈局,因爲這些按鈕是根據API輸入從Java動態放置的。無論如何要做到這一點,或者我只需要設計一個函數來處理它呢?

+0

按鈕的寬度是否不同?如果不是,3按鈕是否會始終填充佈局的寬度? – 2015-03-31 02:28:25

+0

不幸的是,但如果按鈕的寬度相同,我可以適應這種想法 – 2015-03-31 02:33:29

回答

0

想想GridView,請參閱Android Developer

你應該定義網格視圖中your_layout.xml容器

<your.package.ButtonsGridView 
android:id="@+id/buttonsGridView" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:numColumns="auto_fit" 
android:stretchMode="columnWidth" /> 

然後延伸GridView名爲ButtonsGridView自定義類,

,然後延伸到ArrayAdapter<T>自定義類名爲ButtonsAdapter,以管理數據。

並設置ButtonsAdapterButtonsGridView

ButtonsGridView buttonsGridView = (ButtonsGridView) findViewById(R.id.buttonsGridView); 
ButtonsAdapter buttonsAdapter = new ButtonsAdapter(Context); 
buttonsGridView.setAdapter(buttonsAdapter); 

考慮不同的按鈕寬度的,可以在適配器的方法public View getView(int position, View convertView, ViewGroup parent)經理寬度,你可以做你想要自定義按鈕什麼。

提到這個問題&答案Grid View change column number runtime?改變列號。

+0

謝謝,這非常有用! – 2015-03-31 06:17:44

+0

@ YousifAl-Raheem我的榮幸(可能你可以接受爲你的回答:) – li2 2015-03-31 06:23:51

0

那麼如果您的按鈕具有不同的寬度尺寸,那麼你可以使用GridView,您可以設置其android:numColumnsauto_fit其中,如果第一行,下一次你添加一個按鈕,將下一行/列中加入已充滿鍵然後的網格。

比方說,如果你有的match_parent寬度然後一個按鈕添加將在下一行,因此如果有一個固定按鈕寬度那麼它將下一按鈕添加到彼此,直到它的下一個按鈕填充gridview的寬度,下一行將會添加下一個按鈕。

如果你想實現gridview,那麼你可以去here

+0

謝謝我認爲它正在工作 – 2015-03-31 06:18:00

1

如果您View s的動態可以加入你想用一個GridView,因爲它使用Adapter獲得View原來決心在屏幕上(同ListView)來顯示。但是,如果你將添加View s到在設計時的佈局,也許你可以使用GridLayout

Xamarin有大約GridLayout一個很好的解釋檢查here

您也可以在SO檢查this question看到一個更詳細的差異在GridViewGridLayout之間: