Kivy下拉列表不适用于Android
我在应用程序上使用下拉菜单,但它在Android上不起作用。当我在笔记本上跑步时,它工作正常。但在Android上,当我触摸下拉菜单时,似乎“按钮被点击了”,但我看不到下拉菜单的元素,什么都没有发生 这是我的main.py:Kivy下拉列表不适用于Android,android,python,drop-down-menu,kivy,dropdown,Android,Python,Drop Down Menu,Kivy,Dropdown,我在应用程序上使用下拉菜单,但它在Android上不起作用。当我在笔记本上跑步时,它工作正常。但在Android上,当我触摸下拉菜单时,似乎“按钮被点击了”,但我看不到下拉菜单的元素,什么都没有发生 这是我的main.py: 在安卓系统上运行良好,有什么不同的事情要做吗 我用Spinner做了类似的尝试,在android上运行得很好,但是我不能改变按钮的样式。由于这个原因,我使用了下拉菜单而不是微调器。使用微调器,我可以更改按钮的颜色,但不能更改所选选项或出现的第一个选项的颜色。在我的解决方
在安卓系统上运行良好,有什么不同的事情要做吗 我用Spinner做了类似的尝试,在android上运行得很好,但是我不能改变按钮的样式。由于这个原因,我使用了下拉菜单而不是微调器。使用微调器,我可以更改按钮的颜色,但不能更改所选选项或出现的第一个选项的颜色。在我的解决方案中,我将白色作为背景,但我无法选择其他颜色,因为背景始终为灰色。我尝试了类似于Spinner的方法,并在android上运行良好,但我无法更改按钮样式。由于这个原因,我使用了下拉菜单而不是微调器。使用微调器,我可以更改按钮的颜色,但不能更改所选选项或出现的第一个选项的颜色。在我的解决方案中,我将白色作为背景,但我无法选择其他颜色,因为背景始终保持灰色。
from kivy.app import App
from kivy.uix.scrollview import ScrollView
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
import os
from kivy.uix.tabbedpanel import TabbedPanel
import modelos
Window.clearcolor = (1, 1, 1, 1)
class DAP(App):
title = u'Aplicativo do DAP'
# Funções para evitar que o aplicativo desligue ao mudar o foco da tela no celular
def on_pause(self): return True
def on_resume(self): pass
def build(self):
#Abas
self.painel = TabbedPanel(background_color = modelos.cor_fundo,do_default_tab = False,background_normal='')
self.aba_1 = modelos.gera_aba(u'Principal') ; self.painel.add_widget(self.aba_1)
self.aba_2 = modelos.gera_aba(u'Registros') ; self.painel.add_widget(self.aba_2)
self.aba_3 = modelos.gera_aba(u'Resumo') ; self.painel.add_widget(self.aba_3)
self.aba_4 = modelos.gera_aba(u'Tabela') ; self.painel.add_widget(self.aba_4)
self.cont_1 = modelos.gera_grid_padrao(Window)
self.cont_2 = modelos.gera_grid_padrao(Window)
self.cont_3 = modelos.gera_grid_padrao(Window)
# Conteúdo da aba 1
Bl = BoxLayout(spacing=1) ; Bl.add_widget(modelos.gera_label(u'',ha='center')) ; self.cont_1.add_widget(Bl)
Bl = BoxLayout(spacing=1) ; Bl.add_widget(modelos.gera_label(u'[b]Baixar passaporte[/b]',ha='center')) ; self.cont_1.add_widget(Bl)
Bl = BoxLayout(spacing=1) ; Bl.add_widget(modelos.gera_label(u'',ha='center')) ; self.cont_1.add_widget(Bl)
Bl = BoxLayout(spacing=1) ;
Bl.add_widget(modelos.gera_label(u'',hint=(0.2,1)))
Bl.add_widget(modelos.gera_lista((u'SR 600 km - Mogi das Cruzes', 'BRM 200 km Randonneurs Lapa 31/01/2016', 'BRM 300 km Randonneurs Lapa 12/12/2015'),(300,45),hint=(0.4,1))) ;
Bl.add_widget(modelos.gera_botao(u'Carregar',(45,45),hint=(0.2,1),fundo=(0,1,0,0.7)))
Bl.add_widget(modelos.gera_label(u'',hint=(0.2,1)))
self.cont_1.add_widget(Bl)
Bl = BoxLayout(spacing=1) ; Bl.add_widget(modelos.gera_label(u'[b]Texto 2[/b] - d')) ; self.cont_2.add_widget(Bl)
Bl = BoxLayout(spacing=1) ; Bl.add_widget(modelos.gera_label(u'[b]Texto 3[/b] - d')) ; self.cont_3.add_widget(Bl)
# Definições iniciais
tamx = Window.system_size[0] ; tamy = Window.system_size[1]
# Scrollviews das abas
scr_1 = ScrollView( size_hint_y=1, size_hint_x=1) ; scr_1.add_widget(self.cont_1)
scr_2 = ScrollView( size_hint_y=1, size_hint_x=1) ; scr_2.add_widget(self.cont_2)
scr_3 = ScrollView( size_hint_y=1, size_hint_x=1) ; scr_3.add_widget(self.cont_3)
# Atribuindo conteúdos às abas
self.aba_1.content = scr_1
self.aba_2.content = scr_2
self.aba_3.content = scr_3
return self.painel
if __name__ in ('__main__','__android__'):
DAP().run()
#The DropDown is on "modelos.py" and the respective code is this:
def gera_lista(elementos,tamanho,hint=(None,None)):
lista = DropDown()
botaoprincipal = Button(text=u'Escolha um brevet',
size_hint=hint,
size=tamanho,
background_color = cor_fundo_botao,
color = cor_fonte_botao,
font_name=fonte_padrao,
background_normal='')
for elemento in elementos:
btn = Button(text=elemento,
size_hint_y=None,
height=tamanho[1],
background_normal='',
background_color = cor_fundo_botao,
color = cor_fonte_botao,
font_name=fonte_padrao,
)
btn.bind(on_release=lambda btn: lista.select(btn.text))
lista.add_widget(btn)
botaoprincipal.bind(on_release=lista.open)
lista.bind(on_select=lambda instance, x: setattr(botaoprincipal, 'text', x))
return botaoprincipal