11class UI ::Navigation
22 attr_reader :root_screen
33
4+ #In pixels
5+ def self . bar_height
6+ @bar_height ||= begin
7+ value = Android ::Util ::TypedValue . new
8+ if UI . context . theme . resolveAttribute ( Android ::R ::Attr ::ActionBarSize , value , true )
9+ Android ::Util ::TypedValue . complexToDimensionPixelSize ( value . data , UI ::context . resources . displayMetrics )
10+ else
11+ resource_id = UI . context . resources . getIdentifier ( 'action_bar_default_height' , 'dimen' , 'android' )
12+ if resource_id
13+ UI . context . resources . getDimensionPixelSize ( resource_id )
14+ else
15+ 0
16+ end
17+ end
18+ end
19+ end
20+
421 def initialize ( root_screen )
522 @root_screen = root_screen
623 @root_screen . navigation = self
@@ -16,9 +33,11 @@ def hide_bar
1633 if bar . isShowing
1734 bar . hide
1835 Task . after 0.05 do
19- screen = @current_screens . last
20- screen . view . height += ( bar . height / UI . density )
21- screen . view . update_layout
36+ bar_height = bar . height >0 ? bar . height : self . class . bar_height
37+ @current_screens . each do |e |
38+ e . view . height += ( bar_height / UI . density )
39+ e . view . update_layout
40+ end
2241 end
2342 end
2443 end
@@ -28,9 +47,11 @@ def show_bar
2847 if !bar . isShowing
2948 bar . show
3049 Task . after 0.05 do
31- screen = @current_screens . last
32- screen . view . height -= ( bar . height / UI . density )
33- screen . view . update_layout
50+ bar_height = bar . height >0 ? bar . height : self . class . bar_height
51+ @current_screens . each do |e |
52+ e . view . height -= ( bar_height / UI . density )
53+ e . view . update_layout
54+ end
3455 end
3556 end
3657 end
0 commit comments