Anda dapat mengganti tampilan kapan saja.
int optionId = someExpression ? R.layout.option1 : R.layout.option2;
View C = findViewById(R.id.C);
ViewGroup parent = (ViewGroup) C.getParent();
int index = parent.indexOfChild(C);
parent.removeView(C);
C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Jika Anda tidak ingin mengganti View yang sudah ada , tetapi pilih antara option1 / option2 pada waktu inisialisasi, maka Anda bisa melakukan ini dengan lebih mudah: atur android:id
tata letak induk lalu:
ViewGroup parent = (ViewGroup) findViewById(R.id.parent);
View C = getLayoutInflater().inflate(optionId, parent, false);
parent.addView(C, index);
Anda harus mengatur "indeks" ke nilai yang tepat tergantung pada struktur tampilan. Anda juga bisa menggunakan ViewStub : tambahkan tampilan C Anda sebagai ViewStub dan kemudian:
ViewStub C = (ViewStub) findViewById(R.id.C);
C.setLayoutResource(optionId);
C.inflate();
Dengan begitu Anda tidak perlu khawatir tentang nilai "indeks" di atas jika Anda ingin merestrukturisasi tata letak XML Anda.
android.app.FragmentTransaction
danreplace()
metode itu.Dan jika Anda melakukannya sangat sering, Anda bisa menggunakan ViewSwitcher atau ViewFlipper untuk memudahkan penggantian tampilan.
sumber
sumber
itu berfungsi dalam kasus saya, oldSensor dan newSnsor - oldView dan newView:
sumber