如何在 LinearLayout 中将一个视图移动到另一个视图下?

How do I shift a View under another View in LinearLayout?

我似乎找不到适合我的问题的关键词。不要与 XML 布局编辑混淆,我可以在 LinearLayout 容器内以编程方式将一个 View 实时移动到另一个 View 下方吗?

这是我的主要布局 XML 文件。只需将两个按钮拖到 UI 编辑器并命名它们就很简单:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="#000000"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 1" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button 2" />
</LinearLayout>

假设我在我的应用程序中做了一些事情,突然 button1 移动到 button2 以下并且 button2 上升了。我怎样才能做到这一点? my1Button.shiftDown(); 或类似的东西是否存在?

您需要使用线性布局的子项。像这样:

public void reorderButtons() {
    LinearLayout layout = (LinearLayout) findViewById(R.id.main_layout);

    View button1 = layout.getChildAt(0);
    View button2 = layout.getChildAt(1);

    // Remove both buttons
    layout.removeAllViews();

    // Add the buttons in the order you want
    layout.addView(button2);
    layout.addView(button1);
}