2012-05-04 28 views
19

Tôi biết rằng tôi có thể làm cho lớp phủ ActionBar sử dụng requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
và có thể chuyển đổi/hiển thị thanh trạng thái ở màn hình của tôi (bằng cách chuyển đổi giữa các FLAG_FULLSCREENFLAG_FORCE_NOT_FULLSCREEN).
Công trình này tuyệt vời. Tuy nhiên, tôi không muốn bố cục của mình chuyển động khi tôi bật thanh trạng thái.overlay statusbar Android với ActionBar

tôi biết rằng tôi có thể làm cho thanh trạng thái "overlay" (mặc dù không minh bạch) nội dung sử dụng:

WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS

này cũng hoạt động tốt, ngoại trừ (dự kiến) hậu quả đó, khi sử dụng ActionBar, ActionBar bị cắt một nửa - một nửa trong số đó là dưới thanh trạng thái về cơ bản.

Vì vậy, tôi tự hỏi, có cách nào để "di chuyển thanh ActionBar xuống" theo chiều cao của thanh trạng thái trong trường hợp này không?
Tôi biết rằng trong trường hợp xấu hơn, tôi có thể thực hiện việc này với chế độ xem tùy chỉnh nằm trong bố cục, nhưng tôi không thực hiện điều này (muốn hưởng lợi từ ActionBar).

cảm ơn!

+0

Nó không được khuyến khích để hiển thị thanh công cụ trong khi ẩn thanh trạng thái. – zgulser

Trả lời

4

vì vậy rõ ràng, bạn có thể làm điều này trong Jellybean. google bao gồm hai ví dụ trong tài liệu api. đây là một liên kết: http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility%28int%29

tóm tắt: sử dụng setSystemUiVisibility để xem khả năng chuyển đổi chế độ hiển thị (trên jellybean +).

+0

Làm thế nào điều này có thể đạt được trong ICS, ý tưởng nào? –

+1

mà không sử dụng thanh tác vụ của riêng bạn (triển khai tùy chỉnh không đặt trong khu vực trang trí cửa sổ), tôi không biết điều này có thể thực hiện được hay không. gần nhất bạn có thể nhận được là câu trả lời của David Scott dưới đây. – ahmedre

0

Tại sao bạn không làm cho nó trong Manifest

android:theme="@android:style/Theme.Black.NoTitleBar" 

hơn bạn không có statusbar và nhiều không gian hơn cho Actionbar ??

+0

cảm ơn, nhưng vì đây là một ứng dụng đọc, tôi muốn người dùng biết thời gian khi họ chạm vào màn hình và muốn bố cục của tôi ở chế độ toàn màn hình. – ahmedre

3

Đó không phải là hoàn hảo, nhưng đây là cách tôi đã đạt được những gì bạn muốn:

Trong onCreate:.

GetWindow() setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) ;

Sau đó:

private void hideStatusBar() { 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN); 

} 

private void showStatusBar() { 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

} 

Tôi cũng có một phong cách trên hoạt động như sau:

<style name="readingStyle" parent="@style/Theme.Sherlock"> 
    <item name="android:windowActionBarOverlay">true</item> 
    <item name="windowActionBarOverlay">true</item>  
</style> 

hoạt động của bạn sẽ chuyển xuống khi tình trạng chương trình thanh, nhưng tôi không nghĩ rằng nó quá đáng chú ý.

+0

cảm ơn David - thật không may, điều này đã là những gì tôi đã có - tôi đã cố gắng để ngăn chặn các hoạt động từ chuyển xuống. tôi đoán cách duy nhất để làm điều đó là sử dụng bố cục tùy chỉnh làm thanh tác vụ và chỉ đặt đồng hồ thành lớp phủ thay vì thực sự sử dụng thanh tác vụ thực: ( – ahmedre

+0

phương thức 'hideStatusBar()' hoạt động mạnh hơn 'setSystemUiVisibility' kết hợp với ActionBar từ gói tương thích – OneWorld

0

Đặt phương pháp này trong onCreate hoạt động() phương pháp:

getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

tham khảo: link