我试图为Android智能手机的每个不同分辨率创建不同的布局。所以我创建了所有布局,在这里列出:
from tkinter import *
def setX(canvas) :
x = PhotoImage(file = 'E:\X.png')
#what to do here to replace button on grid with X or O image?
def create_grid(event=None):
w = c.winfo_width() # Get current width of canvas
h = c.winfo_height() # Get current height of canvas
c.delete('grid_line') # Will only remove the grid_line
# Creates all vertical lines at intevals of 100
for i in range(0, w, 200):
c.create_line([(i, 0), (i, h)], tag='grid_line')
# Creates all horizontal lines at intevals of 100
for i in range(0, h, 200):
c.create_line([(0, i), (w, i)], tag='grid_line')
root = Tk()
c = Canvas(root, height=600, width=600, bg='white')
c.pack(fill=BOTH, expand=True)
c.bind('<Configure>', create_grid)
b = []
for _ in range(9):
b.append(Button(c, text="Click", width=10))
b[0].place(x = 60, y = 70)
b[1].place(x = 265, y = 70)
b[2].place(x = 455, y = 70)
b[3].place(x = 60, y = 275)
b[4].place(x = 265, y = 275)
b[5].place(x = 455, y = 275)
b[6].place(x = 60, y = 475)
b[7].place(x = 265, y = 475)
b[8].place(x = 455, y = 475)
root.resizable(width=False, height=False)
root.mainloop()
但我是否必须指定&#34;使用该布局&#34;?因为在像Nexus S这样的小屏幕分辨率下,当我创建最终的apk时,布局与其他布局相同。
答案 0 :(得分:0)
为不同屏幕尺寸创建不同布局的当前最佳方法是使用最小宽度限定符。
Nexus S的宽度为320dp。更现代的手机具有更大的宽度:Nexus 5的宽度为360dp,Pixel的宽度略大于400dp。七英寸片通常具有至少600dp的宽度,而十英寸片通常具有至少720dp的宽度。
考虑到所有这些,你可以建立这个目录结构:
res/layout/my_layout.xml
res/layout-sw360dp/my_layout.xml
res/layout-sw400dp/my_layout.xml
res/layout-sw600dp/my_layout.xml
res/layout-sw720dp/my_layout.xml
最后一个布局(sw720dp
一个)将用于720dp或更大的任何设备。 sw600dp
布局将用于任何600dp - 719dp宽的设备。 sw400dp
布局将用于任何400dp - 599dp宽的设备。等等。