有没有办法创建一个水平wrap_content的布局,如果该行已满,则将其余部分放在新行中。
示例:
如果我创建一个方向设置为水平的线性布局,然后我创建三个按钮填充屏幕大小(按钮)(按钮)(按钮),现在如果我添加更多按钮,它将以非常丑陋的方式放置在队伍的尽头。我想要的是将新按钮放在新行中,并且我不想创建多个布局,因为这些按钮是根据API输入从java动态放置的。无论如何要做到这一点,或者我只需设计一个功能来处理它?</ p>
答案 0 :(得分:1)
如果动态添加了View
,您可能希望使用GridView
,因为它使用Adapter
来获取将在屏幕上显示的View
(与ListView
相同。但是,如果您要将View
添加到设计时的布局中,也许您可以使用GridLayout
Xamarin对GridLayout
检查here
您也可以在SO中查看this question,以查看GridView
和GridLayout
之间更详细的差异:
答案 1 :(得分:0)
如果您的按钮的宽度不同,那么您可以使用GridView
将android:numColumns
设置为auto_fit
,如果第一行已填充按钮,则下次添加时将在网格的下一行/行中添加一个按钮。
假设您有一个宽度为match_parent
的按钮,则添加的下一个按钮将位于下一行,因此如果您有固定按钮宽度,则会添加按钮彼此相邻,直到填满网格视图宽度,下一个按钮将在下一行。
如果你想实现gridview,那么你可以去here。
答案 2 :(得分: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
的自定义类,以管理数据。
并将ButtonsAdapter
设为ButtonsGridView
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?以更改列号。