Я много раз отвечал на этот вопрос на SO, но сначала не узнал его. Проблема в том, что adaptive_height: True
означает, что MDGridLayout
запрашивает у своих потомков их высоту и использует это для вычисления минимальной высоты. В вашем случае внутренний ScrollView
имеет значения по умолчанию size_hint
(что составляет (1,1)
). Каждый раз, когда вы используете adaptive_height
(или height: self.minimum_height
), вы должны убедиться, что дети имеют четко определенные высоты. Поскольку внутренний ScrollView
не имеет четко определенной высоты, MDGridLayout
присваивает ему нулевую высоту. Вот фрагмент вашего kv
с одним возможным исправлением:
ScrollView: # this is the inner ScrollView
size_hint_y: None
height: inner_grid.height
MDGridLayout:
id: inner_grid
cols: 3
adaptive_height: True
padding: dp(4), dp(4)
spacing: dp(4)
Это определяет height
внутреннего ScollView
как height
внутреннего MDGridLayout
.