Có cách nào để gọi setContentView (id) nhiều lần với id khác nhau trong một Hoạt động để hiển thị các chế độ xem khác nhau hay tôi hoàn toàn phải bắt đầu Hoạt động mới?Gọi setContentView() nhiều lần
Trả lời
mỗi Austyn, tôi đã quản lý để xác định vị trí một số hướng dẫn về cách sử dụng ViewFlipper để thực hiện điều này trong bài khác (xem câu trả lời đầu checkmarked here.)
Nếu bạn không muốn sử dụng ViewFlipper, tôi tìm thấy một ví dụ tốt đẹp của làm thế nào để chuyển đổi giữa các bố trí trong giao diện tương tự here:
XML:
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:src="@drawable/icon"
android:scaleType="fitCenter"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
<TextView
android:text="Learn-Android.com"
android:textSize="24sp"
android:textColor="#000000"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:gravity="center"/>
</FrameLayout>
Code:
private void SwitchLayout2() {
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1);
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2);
// Enable Layout 2 and Disable Layout 1
Layout1 .setVisibility(View.GONE);
Layout2.setVisibility(View.VISIBLE);
}
private void SwitchLayout1() {
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1);
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2);
// Enable Layout 1 & Disable Layout2
Layout1.setVisibility(View.VISIBLE);
Layout2.setVisibility(View.GONE);
}
Không, bạn không thể gọi nó nhiều lần dễ dàng. Bạn cần xóa hoàn toàn tất cả chế độ xem và sau đó tăng bố cục mới hoặc sử dụng ViewFlipper
(hoặc FrameLayout
) để chuyển đổi giữa các chế độ xem khác nhau.
Một lưu ý phụ, câu hỏi này đã được hỏi trước đó, mặc dù tôi không thể tìm thấy ngay. bình luận
Bạn có thể thử này từ hoạt động của bạn:
getWindow().addContentView(View, ViewGroup.LayoutParams);
Nội dung hai quan điểm sẽ là một trong những ngày đầu của người kia. Tuy nhiên, không có cách nào thẳng về phía trước để xóa một chế độ xem nhất định được thêm theo cách này.
Cũng lưu ý rằng gọi setContentView
sau cuộc gọi cuối cùng, sẽ xóa tất cả các chế độ xem nội dung đã thêm trước đó.
- 1. gọi lại jquery được gọi nhiều lần
- 2. DataBindingComplete được gọi nhiều lần
- 3. ABAddressBookRegisterExternalChangeCallback được gọi nhiều lần
- 4. EKEventStoreChangedNotification được gọi nhiều lần
- 5. ASP.Net: Page_Load() được gọi nhiều lần
- 6. jquery .click được gọi nhiều lần
- 7. locationManager: didUpdateLocations: luôn được gọi nhiều lần
- 8. Gọi 'phát hành' quá nhiều lần?
- 9. textFieldShouldEndChỉnh sửa được gọi nhiều lần
- 10. Rails after_save gọi lại được gọi nhiều lần
- 11. RadioGroup gọi onCheckChanged() ba lần
- 12. Bộ thu phát sóng onReceive() được gọi nhiều lần
- 13. AngularJS gọi HTTP nhiều lần trong bộ điều khiển
- 14. Gọi bản đồ.fitBounds() Nhiều lần trong Google Maps API v3.0
- 15. Tại sao zumero_sync cần được gọi nhiều lần?
- 16. Chạy Android thử nghiệm thiết lập() được gọi nhiều lần
- 17. Array_Map sử dụng nhiều lần gọi lại gốc?
- 18. Phương pháp hành động được gọi nhiều lần
- 19. jQuery, gọi lại chỉ một lần sau nhiều hoạt ảnh
- 20. loadView được gọi nhiều lần khi không xem thuộc tính?
- 21. Phương thức HttpModule Init được gọi nhiều lần - tại sao?
- 22. onGetViewFactory chỉ được gọi một lần cho nhiều tiện ích
- 23. Phương thức ng lớp được gọi nhiều lần
- 24. ListView - getView được gọi là quá nhiều lần
- 25. Trình nghe trạng thái điện thoại được gọi nhiều lần
- 26. UITableView cellForRowAtIndexPath được gọi nhiều lần cho mỗi hàng
- 27. Gọi hàm nhiều lần và nhận danh sách kết quả
- 28. Javascript gọi hàm nhiều lần với các đối số
- 29. Tại sao hàm tạo HttpApplication được gọi nhiều lần
- 30. Hiệu suất canvas WPF- children.add được gọi nhiều lần
Bạn thực sự nên sử dụng 'ViewFlipper' để thực hiện điều này và không chỉ thay đổi mức hiển thị trên mỗi' View' –
@AustynMahoney, thật tuyệt vời khi biết lý do tại sao thực hành tốt nhất để sử dụng ViewFlipper thay vì glenviewjeff phương pháp mô tả. – user438293456
Tại sao bạn muốn phát minh lại bánh xe khi Android đã cung cấp một cách rất đơn giản để thực hiện điều chính xác này? Điều gì xảy ra khi bạn muốn mở rộng điều này thành 3 bố cục, hoặc có thể là 18? Nếu bạn sử dụng 'ViewFlipper', nó sẽ chết đơn giản, nếu bạn không may mắn khi duy trì mã cơ sở đó. –