同じアクティビティで異なるケースに2つの異なるレイアウトを設定することは可能ですか、それとも異なるレイアウトで別のケースを呼び出すために使用する必要がありますかintent
?activity
5 に答える
はい、可能です。1つのアクティビティにできるだけ多くのレイアウトを使用できますが、同時に使用することはできません。次のようなものを使用できます。
if (Case_A)
setContentView(R.layout.layout1);
else if (Case_B)
setContentView(R.layout.layout2);
等々...
はい、これはスイッチケースでも可能です
私はすでにこのコードを試しました...
switch (condition) {
case 1:
setContentView(R.layout.layout1);
break;
case 2:
setContentView(R.layout.layout2);
break;
case 3:
setContentView(R.layout.layout3);
break;
default:
setContentView(R.layout.main);
break;
}
フラグメントの使用をお勧めします
フラグメントに問題がある場合は、他の解決策を見つけるためにもっと説明できると役に立ちます
編集
より低いOSバージョンをサポートするためにAndroidサポートライブラリを使用する
Edit2
2つのxmlを使用する場合は、2つのxmlを1つに組み合わせて使用できます。
<include layout="@layout/YOURXMLNAME1" />
<include layout="@layout/YOURXMLNAME2" />
これは、多くの場合、レイアウトを再度使用するときにも役立ちます
これを行うにはいくつかの方法があります。他の答えには、少なくとも2つのアプローチが含まれます。ケースに応じてsetContentViewを使用する方法と、フラグメントを使用する方法です。もう1つお話ししたいことがあります。たとえば、2つのレイアウトを含めるとします
<include
android:id = "@+id/layout1"
layout = .../>
<include
android:id = "@+id/layout2"
layout = ...
android:visibility = "gone"/>
Javaコードでは、ユースケースに応じてレイアウトを非表示または表示できます。たとえば、上記のレイアウトを表示するようにコンテンツビューを設定すると、layout1が表示されます。ユーザーが[次へ]ボタンをクリックすると、layout1への参照を取得し、その可視性をgoingに設定し、layout2の可視性をvisibleに設定できます。
LinearLayout layout1 = findViewById(R.id.layout1);
LinearLayout layout2 = findViewById(R.id.layout2);
buttonNext.setOnClickListener(new View.OnClickListener()
{
layout1.setVisibility(View.GONE);
layout2.setVisibility(View.VISIBLE);
});
これがViewFlipperに最適なソリューションです。
ViewFlipperは、追加された2つ以上のビュー間でアニメーション化するシンプルなViewAnimatorです。一度に表示される子は1つだけです。必要に応じて、定期的に各子を自動的に切り替えることができます。 これがviewflipperの良い例です。これ
も見ることができます。
編集:-あなたのための1つのStackoverFlowの答え