2011-08-22 33 views
6

Có cách nào để đặt chế độ ngang cho toàn bộ ứng dụng, không phải bằng cách thêm android:screenOrientation="portrait" vào mọi hoạt động trong AndroidManifest?Tắt chế độ ngang cho toàn bộ ứng dụng

+2

Đó không phải là cách bạn phải xử lý loại điều này trong Android. Trừ khi bạn có một lý do rất tốt để làm như vậy, tôi sẽ khuyên bạn nên làm điều này trong tệp kê khai. – Codeman

Trả lời

10

Đây là điều duy nhất tôi có thể nghĩ đến. Viết một lớp mở rộng Hoạt động và đặt các lớp sau vào lớp đó:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Sau đó, thay vì mở rộng Hoạt động trong các lớp khác của bạn, hãy mở rộng lớp mới.

+0

Bạn đặt cái này ở đâu vào phương pháp oncreate? – theJerm

+1

Có - bạn có thể đặt nó trong phương thức onCreate của lớp siêu. Đừng quên gọi super.onTạo từ lớp mở rộng của bạn. – SBerg413

+0

Cảm ơn bạn đã phản hồi. – theJerm

0

Bạn có thể thử đặt thuộc tính đó vào nút tệp kê khai của mình. Tôi không biết nếu đó là hỗ trợ mặc dù. Và nếu không Im sợ đặt nó trong mỗi của bạn sẽ là cách dễ nhất tiếp theo.

Bạn có thể đạt được điều đó bằng cách đặt cho mình một CustomActivity mở rộng hoạt động và đặt cờ cửa sổ thành Portrait trong onCreate. Sau đó, với tất cả các hoạt động khác của bạn, bạn có thể mở rộng CustomActivity thay vì Hoạt động đơn giản.

7

Một cách có lập trình để làm điều này, mà tôi có thể nghĩ đến, là tạo một lớp siêu mở rộng hoạt động và mở rộng tất cả các lớp học của bạn từ đó.

Có cài đặt bên dưới trong lớp siêu trong một phương pháp bảo vệ và gọi super.xxx() để bắt đầu này:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

Trong trường hợp bạn những gì một hoạt động cụ thể theo một cách khác bạn chỉ có thể ghi đè này .

[Tôi chưa thử điều này, nhưng theo kiến ​​thức về OOP hoạt động này]

+2

đôi khi khi một hoạt động được bắt đầu sử dụng phương pháp này, nó có thể nhanh chóng nhảy từ cảnh quan đến chân dung vì vậy tôi khuyên bạn nên chống lại điều này! – Dori

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