2015-03-31 68 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之间: