首页 > 解决方案 > Android - 使用不同的按钮显示不同的布局

问题描述

我创建了 4 个不同<LinearLayout>的和 4 个不同的<button>. 我想为每个按钮显示不同的布局。

我试过这个:

public void changeToLinear1(View view) {
        layoutPrimer.setVisibility(View.VISIBLE);
        layoutSegon.setVisibility(View.GONE);
        layoutPostre.setVisibility(View.GONE);
        layoutExtra.setVisibility(View.GONE);
    }

public void changeToLinear2(View view) {
    layoutPrimer.setVisibility(View.GONE);
    layoutSegon.setVisibility(View.VISIBLE);
    layoutPostre.setVisibility(View.GONE);
    layoutExtra.setVisibility(View.GONE);
}

public void changeToLinear3(View view) {
    layoutPrimer.setVisibility(View.GONE);
    layoutSegon.setVisibility(View.GONE);
    layoutPostre.setVisibility(View.VISIBLE);
    layoutExtra.setVisibility(View.GONE);
}

public void changeToLinear4(View view) {
    layoutPrimer.setVisibility(View.GONE);
    layoutSegon.setVisibility(View.GONE);
    layoutPostre.setVisibility(View.GONE);
    layoutExtra.setVisibility(View.VISIBLE);
}



<Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Primers"
        android:id="@+id/btnPrimers"
        android:layout_weight="1"
        android:onClick="changeToLinear1"/>

还有 3 个具有不同数据的按钮和“onClick”调用另一个它们各自的功能。

我怎么能做到这一点?有没有更好的办法?

标签: android

解决方案


您可以让所有四个按钮调用相同的方法:

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Primers"
    android:id="@+id/btnPrimers"
    android:layout_weight="1"
    android:onClick="changeToLinear"/>

<Button
    ...
    android:onClick="changeToLinear"/>

<Button
    ...
    android:onClick="changeToLinear"/>

<Button
    ...
    android:onClick="changeToLinear"/>

public void changeToLinear(View view) {
    layoutPrimer.setVisibility(view.getId() == R.id.btnPrimers ? View.VISIBLE : View.GONE);
    layoutSegon.setVisibility(view.getId() == R.id.XXXXXXX ? View.VISIBLE : View.GONE);
    layoutPostre.setVisibility(view.getId() == R.id.YYYYYYY ? View.VISIBLE : View.GONE);
    layoutExtra.setVisibility(view.getId() == R.id.ZZZZZZZ ? View.VISIBLE : View.GONE);
}

(我不知道id你的其他三个按钮,但你可以填写它们。)

参数是被点击以触发点击事件的view任何视图,因此您可以使用它来确定点击了哪个按钮。


推荐阅读