如何让灵活的按钮在 android 中对齐?

How to have flexible buttons allign in android?

您好,问题可能难以理解,但我会尽力而为。 首先这是代码

    <Linear
android:id="@+id/interestLayout"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_below="@+id/layout_roots"

android:background="#e0e0e0">

<Button
    android:id="@+id/dancing"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:background="@drawable/ruhesi_buttondesigns"
    android:onClick="toggling"
    android:text="@string/dancing"
    android:textColor="#FF4444" />

<Button
    android:id="@+id/cooking"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_alignTop="@+id/dancing"
    android:layout_marginLeft="10dp"
    android:layout_toEndOf="@+id/dancing"
    android:layout_toRightOf="@+id/dancing"
    android:background="@drawable/ruhesi_buttondesigns"
    android:onClick="toggling"
    android:text="@string/cooking"
    android:textColor="#FF4444" />

<Button
    android:id="@+id/painting"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/cooking"
    android:layout_toEndOf="@+id/cooking"
    android:background="@drawable/ruhesi_buttondesigns"
    android:onClick="toggling"
    android:text="@string/painting"

    android:textColor="#FF4444" />

<Button
    android:id="@+id/playing_instruments"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_marginLeft="10dp"
    android:layout_toRightOf="@+id/painting"
    android:layout_toEndOf="@+id/painting"
    android:background="@drawable/ruhesi_buttondesigns"
    android:onClick="toggling"
    android:text="@string/playing_instruments"
    android:textColor="#FF4444" />
<Button
    android:id="@+id/pets"
    android:layout_width="wrap_content"
    android:layout_height="30dp"
    android:layout_toRightOf="@+id/playing_instruments"
    android:layout_toEndOf="@+id/playing_instruments"
    android:layout_marginLeft="10dp"
    android:background="@drawable/ruhesi_buttondesigns"
    android:onClick="toggling"
    android:text="@string/playing_instruments"
    android:textColor="#FF4444" />
    </Linear>

所以这为我生成了这张图片: Located

所以我们现在每个设备都有不同的屏幕尺寸,所以在大设备中,所有这些按钮可能会在一行中对齐,但在较小的屏幕中,我希望按钮对齐(例如最后一个按钮不可见)应该去下面)。所以在一行中可以有 3 个按钮,第二行可以有 2 个按钮,具体取决于按钮的文本,下一行可能又是 3 个按钮。我们如何才能提供这种灵活性?

None of the Android's stock layouts provided this behavior, but there are multiple library to achieve this, such as the following: https://github.com/ApmeM/android-flowlayout

他们的 github 页面有关于如何使用它的说明,最重要的是你可以实现自己的布局管理器,但它有点复杂。

如果你 google FlowLayout Android 你会找到更多信息。

如果你不需要这样的灵活性,你也可以为不同的屏幕尺寸提供不同的布局,你可以阅读更多关于它的内容here