2012-08-08 34 views
5

Tôi muốn thanh tiêu đề bị ẩn khi tôi xoay thiết bị của mình thành ngang. Tôi đã thấy các tùy chọn XML để ẩn thanh tiêu đề, và ví dụ sau đây để làm việc đó cách lập trình:Ẩn thanh tiêu đề/thanh thông báo khi thiết bị được định hướng đến phong cảnh

//Remove title bar 
this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
//Remove notification bar 
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

NHƯNG, tôi đang sử dụng configChanges tham số cho orientationscreenSize, vì vậy hoạt động của tôi không được tái tạo lại khi nó đang định hướng đến cảnh quan (Tôi đang làm điều này vì một số lý do). Vì vậy, tôi không thể sử dụng các phương pháp trên vì các cuộc gọi này cần phải được thực hiện trước setContentView().

Vì vậy, bất kỳ ý tưởng nào? Cảm ơn bạn.

+0

Ứng dụng Youtube đang thực hiện nó bằng cách nào đó ... và tôi chắc chắn chúng không tạo lại hoạt động đó (thử chạy video theo chiều dọc).). –

+1

Tôi không nghĩ rằng bạn có thể thay đổi decorview sau khi bạn đã gọi setcontentview. Tôi khuyên bạn nên bắt đầu chế độ xem ở chế độ toàn màn hình và làm cho thanh tiêu đề của bạn trở thành nội dung của bạn. theo cách đó về sự thay đổi quặng, bạn có thể che giấu nó. – Shubhayu

+1

đọc bài đăng này http://stackoverflow.com/questions/4853505/android-how-to-disable-feature-no-title, đề xuất xác định tiêu đề của riêng bạn và bạn có thể ẩn và hiển thị theo ý muốn. – idiottiger

Trả lời

2

đầu tiên kiểm tra hướng thiết bị của bạn bằng cách sử dụng đoạn mã sau

Cấu hình hiện tại, như được sử dụng để xác định các nguồn lực để lấy vv, như có sẵn từ đối tượng Cấu hình của Tài như:

getResources().getConfiguration().orientation 

Sau đó, mã hóa cần thiết liên quan đến ẩn thanh tiêu đề và thanh thông báo.

+3

"mã hóa cần thiết" là gì? đó thực sự là câu hỏi của tôi !!!! –

6

Giả sử bạn đã xác định configChanges cho Activity trong biểu hiện sau đó bạn có thể đạt được vấn đề của bạn trọng onConfigurationChanged phương pháp:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      getActionBar().hide(); 
    } else { 
      getActionBar().show(); 
    } 
} 

Bạn sẽ phải sử dụng getSupportActionBar() thay vì getActionBar() nếu sử dụng các thư viện hỗ trợ.

+0

Trong AppCompatActivity nó không bị sa thải! – IgniteCoders

-1

Trong bạn "AndroidManifest.xml", trong thẻ hoạt động bạn có thể chỉ định "NoTitleBar" trong bất động sản chủ đề để nó sẽ luôn luôn che giấu danh hiệu:

<activity 
    android:name="com.my_package.MyActivity" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    android:configChanges="navigation|orientation|screenLayout|layoutDirection"> 
12

đang tìm kiếm một câu trả lời, đã kết thúc ở đây, đặt các mảnh lại với nhau và ở đây chúng là:

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 
else { 
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 
+0

Cảm ơn, hãy làm việc cho tôi – Tony

+0

đã làm việc cho tôi 2 –