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>

各レイアウトにボタンがあります。このボタンを切り替えて、他のレイアウトが全画面を占めるようにしたいのですが、何も起こりません。最初の画面のon-clickイベントのコードは次のとおりです

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

2つの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コードからlinearlayoutを非表示にする方法を教えてください。

アップデート:

/*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 に答える