我见过this question and answer,这与我想要达到的目标非常接近。
我希望有一个ScrollView显示我的MythTV盒子上即将播放的录音。有一个标题小部件(固定大小)显示日期和一个单独的小部件(BoxLayout)用于记录的详细信息(显示在标签子小部件中)。
我需要根据文本的高度调整BoxLayout的大小。这里的问题是它并不总是具有最多文本的标签,因此最大高度需要考虑所有孩子。
我在我的KV语言文件中有这个:
<MythRecordingHeader>
text: root.rec_date
height: 25
size_hint_y: None
halign: "left"
<MythRecording>
orientation: "horizontal"
#height: 60
height: max(mrec_desc.texture_size[1], mrec_time.texture_size[1], mrec_title.texture_size[1])
size_hint_y: None
BGLabel:
id: mrec_time
size_hint: 0.2, None
text_size: self.width, None
height: max(self.texture_size[1], mrec_title.texture_size[1], mrec_desc.texture_size[1])
#size_hint_x: 0.2
text: root.rec["time"]
bgcolour: root.bg
BGLabel:
id: mrec_title
size_hint: 0.3, None
text_size: self.width, None
height: max(self.texture_size[1], mrec_time.texture_size[1], mrec_desc.texture_size[1])
#size_hint_x: 0.3
text: "{}\n{}".format(root.rec["title"], root.rec["subtitle"])
halign: "left"
bgcolour: root.bg
BGLabel:
id: mrec_desc
text: root.rec["desc"]
size_hint: 0.5, None
text_size: self.width, None
height: max(self.texture_size[1], mrec_time.texture_size[1], mrec_title.texture_size[1])
halign: "left"
bgcolour: root.bg
(BGLabel
是一个自定义小部件,只需通过bgcolour
属性为Label添加纯色背景色。)
并在我的python文件中:
class MythRecording(BoxLayout):
rec = DictProperty({})
bg = ListProperty([0.1, 0.15, 0.15, 1])
def __init__(self, **kwargs):
super(MythRecording, self).__init__(**kwargs)
self.rec = kwargs["rec"]
class MythRecordingHeader(BGLabel):
rec_date = StringProperty("")
def __init__(self, **kwargs):
super(MythRecordingHeader, self).__init__(**kwargs)
self.bgcolour = [0.1, 0.1, 0.4, 1]
self.rec_date = kwargs["rec_date"]
这几乎和我预期的一样 - BoxLayouts的高度确实有所不同,总的来说,显示所有文字,但有一两次有一些剪辑。我不清楚这是否是由于水平对齐造成的。
我目前正将所有这些孩子放在一个BoxLayout中。
然而,我真正的问题是我需要在ScrollView中获取它(因此我提到的链接)。为了让滚动工作,我想我需要设置BoxLayout的高度,但我真的很难计算出它的高度。
循环查看BoxLayout的子项并查看height
属性只显示MythRecordings
的高度为0。
有没有办法可以获得所有孩子的总高度并设置BoxLayout的高度,以便我的scrollview能够正常工作?
答案 0 :(得分:1)
将BoxLayout替换为GridLayout,并设置:
DateTime completeDate = DateTime.Now;
using (SqlConnection connect = new SqlConnection(connectionString))
{
string updateQueryCompletedDate = @"UPDATE Conversions
SET CompletedDate = @CompleteDate,
Status = 'Completed'
WHERE ID = @ID";
SqlCommand command1 = new SqlCommand(updateQueryCompletedDate, connect);
command1.Parameters.AddWithValue("ID", item1.ID);
command1.Parameters.AddWithValue("CompleteDate",completeDate);
connect.Open();
command1.ExecuteNonQuery();
connect.Close();
}
GridLayout的minimum_size属性会自动跟踪其子级的大小。