2010-10-25 31 views
12

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

10

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); 
} 
+4

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' –

+1

@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

+0

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ở đó. –

4

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

0

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 đó.

Các vấn đề liên quan