Android线性布局和可变数量的按钮

时间:2013-05-20 20:01:58

标签: android android-linearlayout android-button

我有一个线性布局,并且必须在此Linearlayout中在运行时向可变数量的按钮充气。现在我的问题是,当我给这个线性布局的Orientation。如果我给它水平或垂直,这会产生问题。将用例子解释它: -

Eg1:输入是3个按钮

预期输出:Button1 Button2 Button3(如果所有3完全匹配在一行中)

如果它们完全适合,所有3个按钮都应该以这种线性布局显示在同一条线上(就像水平一样)。

Eg2:输入是4个按钮,它们不能适合整行

预期产量: -                  第1行: - Button1 Button2(假设Button3不完全适合此行)

             Line2:-  Button3 Button4

目前,如果我将LinearLAyout的方向设置为Horizo​​ntal,那么它会强制一行中的所有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>

2 个答案:

答案 0 :(得分:0)

我的理解是您需要动态加载n个视图,并且希望您的视图在父视图中自动传输。我认为你需要的只是一个带有简单适配器的gridview。 gridview的“单元格”将是您案例中的按钮。有很多关于它的信息。这是谷歌提供的简单指南。

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

希望我帮助你。 问候。

答案 1 :(得分:0)

LinearLayout无法正常工作。它将垂直或水平布置项目(它不会换行)。你有几个选择。

听起来你的按钮尺寸会有所不同(所以你可能不想使用gridview),你可以创建包含多个Horizo​​ntalLinearLayouts(它依次保持Button)的Vertical LinearLayout。

或者,您可以滚动自己的自定义ViewGroup。这两种方法都要求您编写计算逻辑以确定哪一行适合。您的自定义视图组最终可能会更清晰,但需要更多有关视图的知识。