Skip to content

Commit 036805d

Browse files
committed
[Android] fix: screen height wrong. Not catering correctly for action bar
1 parent 82f1e31 commit 036805d

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

flow/ui/android/navigation.rb

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,23 @@
11
class 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

flow/ui/android/screen.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ def view
109109
if resource_id > 0
110110
view_height -= UI.context.resources.getDimensionPixelSize(resource_id)
111111
end
112+
view_height -= UI::Navigation.bar_height
112113

113114
view.width = main_screen_metrics.width / UI.density
114115
view.height = view_height / UI.density

0 commit comments

Comments
 (0)