我有一个奇怪的问题。当我调整窗口大小时,底部BoxLayout(提交和取消)中的按钮从我的屏幕中心一直移动到左侧。但是,如果我调整窗口大小,然后通过屏幕管理器返回到屏幕,它们将返回中心。有什么建议还是有更好的方法让它们居中?
编辑:这是我的应用在启动时的屏幕截图:https://i.imgur.com/wkqx3tN.png
AnchorLayout:
size_hint_y: None
height: max(root.height, content.height)
GridLayout:
id: content
cols: 1
spacing: '8dp'
padding: '8dp'
size_hint: (.8, None)
height: self.minimum_height
BoxLayout:
size_hint_y: None
height: '48dp'
TextInput:
id: textField
multiline: False
BoxLayout:
size_hint_y: None
height: '48dp'
ProgressBar:
id: downloadBar
max: 1
value: 0
BoxLayout:
size_hint: None, None
height: '48dp'
width: '150dp'
center_x: root.center_x
Button:
text: "Submit"
on_press:
TextScreen.download_file(textField.text)
Button:
text: "Cancel"
on_press:
root.manager.transition.direction = 'left'
root.manager.transition.duration = 1
root.manager.current = 'Get_Vod'
答案 0 :(得分:0)
我不能发表评论,因为我是新用户,所以如果不行,请不要贬低。我想说在高度和宽度上你使用的是dp
,而dp
并不用于通过改变屏幕尺寸进行自我调整,你应该使用屏幕比率系统,例如size_hint: .25,.48
。或pos_hint
作为固定职位
希望它会有所帮助。
答案 1 :(得分:0)
您描述的效果对我来说有点意外,但您尝试的方式不会很好,因为它与GridLayout的布局代码不能很好地集成。
您可能希望使用pos_hint
来使BoxLayout居中,但这不会直接在GridLayout中工作,因此您可以选择将GridLayout
(带有一个col)转换为垂直BoxLayout
,或者,如果由于某种原因无法做到这一点,可以将当前BoxLayout
换成另一个,这会使size_hint_x
保持为1,因此它可以适当地让孩子居中。
切换到BoxLayout
AnchorLayout:
size_hint_y: None
height: max(root.height, content.height)
BoxLayout:
id: content
orientation: 'vertical'
spacing: '8dp'
padding: '8dp'
size_hint: (.8, None)
height: self.minimum_height
BoxLayout:
size_hint_y: None
height: '48dp'
TextInput:
id: textField
multiline: False
BoxLayout:
size_hint_y: None
height: '48dp'
ProgressBar:
id: downloadBar
max: 1
value: 0
BoxLayout:
size_hint: None, None
height: '48dp'
width: '150dp'
pos_hint: {'center_x': .5}
Button:
text: "Submit"
on_press:
TextScreen.download_file(textField.text)
Button:
text: "Cancel"
on_press:
root.manager.transition.direction = 'left'
root.manager.transition.duration = 1
root.manager.current = 'Get_Vod'
用BoxLayout包装
AnchorLayout:
size_hint_y: None
height: max(root.height, content.height)
GridLayout:
id: content
cols: 1
spacing: '8dp'
padding: '8dp'
size_hint: (.8, None)
height: self.minimum_height
BoxLayout:
size_hint_y: None
height: '48dp'
TextInput:
id: textField
multiline: False
BoxLayout:
size_hint_y: None
height: '48dp'
ProgressBar:
id: downloadBar
max: 1
value: 0
BoxLayout:
size_hint_y: None
height: '48dp'
BoxLayout:
size_hint_x: None
width: '150dp'
pos_hint: {'center_x': .5}
Button:
text: "Submit"
on_press:
TextScreen.download_file(textField.text)
Button:
text: "Cancel"
on_press:
root.manager.transition.direction = 'left'
root.manager.transition.duration = 1
root.manager.current = 'Get_Vod'