2015-03-31 25 views
9

Tôi đã tìm thấy sự cố ảnh hưởng đến chiều cao Bố cục tương đối trong khi tôi đang cố gắng thêm màu vào thanh trạng thái."FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS" ảnh hưởng đến getRootView(). GetHeight()

adding Flag ảnh hưởng đến việc tính toán chiều cao của bố cục gốc bố cục tương đối.

private void changeStatusBarColor(){ 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Window window = getWindow(); 
      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); 
      window.setStatusBarColor(getResources().getColor(R.color.red_e31837)); 
     } 
    } 

Tôi có người quan sát cây xem giúp tôi theo dõi chiều cao của chế độ xem gốc.

private ViewTreeObserver.OnGlobalLayoutListener keyboardLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 

      int heightDiff = wrapper.getRootView().getHeight() - wrapper.getHeight(); 
} 

int heightDiff bằng tới 1920 nếu tôi sử dụng FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS nhưng nếu tôi không sử dụng changeStatusBarColor(), int heightDiff tương đương với năm 1776 (tính toán mà không actionbar và Statusbar tôi đoán). Nhưng Tại sao thêm tính toán thay đổi cờ này? Cảm ơn bạn trước!

+1

Nếu bạn vượt qua lá cờ đó, trình quản lý cửa sổ sẽ cho bạn thêm chỗ để vẽ trong khu vực thanh hệ thống. Bạn không cần phải vượt qua lá cờ đó để thiết lập màu thanh trạng thái, bạn chỉ cần gọi đến 'setStatusBarColor (int)'. – alanv

+1

@alanv Cảm ơn bạn Tôi đã hiểu lý do; nhưng nếu tôi không sử dụng cờ, màu của thanh trạng thái sẽ không thay đổi. Tôi đã thử vào lúc bắt đầu công việc của mình. Bạn có biết tại sao nó có thể xảy ra? – MiloRambaldi

+0

@MiloRambaldi, Xin chào! Bạn có khắc phục vấn đề này không? – BArtWell

Trả lời

3

Trong trường hợp của tôi, sự cố đã xảy ra trong thư viện SlidingMenu. Đây là solution.

+1

Cảm ơn rất nhiều. Nó cũng làm việc trên thư viện AndroidResideMenu. [Ở đây] (http://stackoverflow.com/questions/28952210/android-residemenu-library-bottom-of-fragment-has-cropping-issue) là giải pháp tương tự mà tôi đã thực hiện. – MiloRambaldi

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