0

我正在使用一个屏幕,我想通过单击按钮在布局之间切换。我希望两个布局都占据屏幕的整个高度,当按下第一个布局上的按钮时,我希望这个布局消失,另一个布局占据它的位置,然后在下一个布局上相同。

<LinearLayout 
    android:id="@+id/layoutFirst"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    ..... views

</LinearLayout>

<LinearLayout 
    android:id="@+id/layoutSecond"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    ..... views

</LinearLayout>

在每个布局上我都有一个按钮。我希望此按钮切换,以便其他布局占据全屏,但没有任何反应。第一个屏幕的点击事件中的代码如下

LinearLayout layoutFirst = (LinearLayout) this.findViewById(R.id.layoutFirst);
layoutFirst.setVisibility(View.GONE);
LinearLayout layoutSecond = (LinearLayout) this.findViewById(R.id.layoutSecond);
layoutSecond.setVisibility(View.VISIBLE);

以防万一问题与fill_parent有关,我还尝试将高度设置为wrap_content。最初我可以在屏幕上看到两种布局,当我按下按钮时,布局仍然什么都不做。

谁能告诉我我做错了什么或者是否有办法解决这个问题。任何帮助将不胜感激

4

2 回答 2

1

将两个 LinearLayout 放在 FrameLayout 中:

<FrameLayout
    android:id="@+id/framelayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/layoutFirst"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" 
        android:visibility="gone">
    </LinearLayout>

    <LinearLayout
        android:id="@+id/layoutSecond"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    </LinearLayout>
</FrameLayout>

给 LinearLayouts 不同的 id!

于 2013-01-07T11:02:37.460 回答
1

您的父布局是“RelativeLayout”吗?=> 这里没有必要。

也试试这个非常相似的线程中提出的解决方案如何从java代码中隐藏线性布局?

更新:

/*global or add final keyword if not global in order to use inside listener */
LinearLayout layoutFirst;
LinearLayout layoutSecond;
/*end global*/

/*in onCreate(Bundle) method*/
layoutFirst = (LinearLayout) this.findViewById(R.id.layoutFirst);
layoutSecond = (LinearLayout) this.findViewById(R.id.layoutSecond);

/*and then in your listener, alternatively*/
layoutFirst.setVisibility(View.GONE);
layoutSecond.setVisibility(View.VISIBLE);
于 2013-01-07T11:17:23.307 回答