我们正在开发一个kivy移动应用程序,它使用图像作为屏幕顶部的横幅(屏幕的其余部分由GridLayout中的按钮和文本组成)。目前,我们已经能够使用“size_hint”来确保每个孩子都适合我的三星S4。但是,每当我们在Kivy窗口(或任何其他手机)上运行应用程序时,横幅都不能正确适合屏幕。我们怎样才能解决这个问题呢?我们尝试过使用“allow_stretch”和“keep_ratio”,虽然它们有效但却不适当地缩放图像。我们的假设是我们应该使用“norm_image_size”,但是找不到任何如何使用它的示例,以便横幅在所有屏幕上正确标准化。
“norm_image_size”是否是在此实例中使用的正确方法? 如果是这样,有人能指出我们如何正确使用它的例子吗?
由于
以下是我们的kv文件中的代码。正如我上面所说,我可以在BoxLayout的每个子节点中使用“size_hint”使它们在我的手机上正确缩放,但是在我的Mac上的Kivy窗口中,这种缩放不适用。
Screen:
name: 'screen1'
FloatLayout:
canvas.before:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
AnchorLayout:
anchor_y: 'top'
anchor_x: 'center'
BoxLayout:
orientation: 'vertical'
size: self.width, self.height
GridLayout:
canvas:
Rectangle:
source: 'img/banner1.png'
size: self.size
pos: self.pos
cols: 5
spacing: '20dp'
padding: '12dp'
row_default_height: '50dp'
row_force_default: True
size_hint: (1.0,.1)
Image:
source: 'img/logo1.png'
Image:
Image:
Image:
Image:
GridLayout:
row_default_height: '80dp'
row_force_default: True
cols: 5
spacing: '5dp'
padding: '10dp'
size_hint: (1,.7)
Button:
id: square1
Button:
id: square2
Button:
id: square3
text:
Button:
id: square4
text:
Button:
id: square5
text:
Button:
id: square6
text:
Button:
id: square7
text:
Button:
id: square8
text:
Button:
id: square9
text:
Button:
id: square10
Button:
id: square11
Button:
id: square12
text:
Button:
id: square13
Button:
id: square14
text:
Button:
id: square15
text:
Button:
id: square16
text:
Button:
id: square17
text:
Button:
id: square18
text:
Button:
id: square19
text:
Button:
id: square20
text:
GridLayout:
row_default_height: '50dp'
row_force_default: True
cols: 1
size_hint: (1,.07)
canvas.before:
Color:
rgb: 1,1,1
Rectangle:
pos: self.pos
size: self.size
Button:
size_hint_y: None
text: 'Return Home'
font_size: '12sp'
font_name: 'fonts/text1.ttf'
background_normal: 'img/return_home4.png'
background_down: 'img/return_home4.png'
border: 20,20,20,20
on_press: root.current = 'home'