问候!
今天,我们将讨论使用Kivy跨平台开发框架编写的应用程序中的Android UI。 您可能对此并不了解,但是对于Kivy,有KivyMD库,该库为您的程序提供了Material Design样式的小部件。 不幸的是,在iOS平台下没有这种东西。 而且,KivyMD显然是由其创建者留下的,因为萝卜的最后一次提交大约是在一年前。 做什么以及如何使用它,请继续阅读...
偶尔访问
官方的KivyMD存储库 ,可悲的是,我发现其中没有任何变化并且不会改变:
实际上,在我的Kivy项目中,我可以实现任何UI。 但是最近我发现我在每个项目中拖了越来越多的已实现模块,这非常不方便。 其中一些解决方案作为单独的存储库发布在GitHub上。 但是,共享,管理和使用所有这些功能仍然不方便,因为此类模块越来越多。 这个决定是在最近才做出的:作为开源项目的KivyMD属于我。 现在这个库的一个分支在
这里 。
我修复了一些小部件遭受的错误。 例如,MDDropDownMenu小部件被剥夺了滚动和选择项目的功能。 现在看起来像这样:
除了大量其他更正之外,还添加了新的小部件和控件。 除了现有的
MDFlatButton,MDRaisedButton,MDIconButton MDFloatingActioButton ...
...我实现了许多控件:
MDRectangleFlatButton,MDRectangleFlatIconButton,MDRoundFlatIconButton,MDRoundFlatButton,MDFillRoundFlatButton ,它们显然在套件中
缺失 :
我还尝试尽可能简化KivyMD的工作。 在标记中使用上述新控件将如下所示:
MDRectangleFlatButton: text: "MDRectangleFlatButton" MDRectangleFlatIconButton: text: "I love Python" icon: "language-python" MDRoundFlatButton: text: "I love Python" icon: "language-python" MDRoundFlatIconButton: text: "I love Python" icon: "language-python" MDFillRoundFlatButton: text: "I love Python"
最近,我的VKontakte组中增加了一个帖子,其中有人要求实现联系卡的帮助:
问候!
有关布局的问题。
我正在制作名片,所以无法选择“布局”类型
a)没有拉伸,元素垂直排列
b)要素之间没有巨大的差距
关于已尝试的BoxLayout,StackLayout-出于某些原因,元素之间存在间隙。 我附上表格和kv代码的屏幕。
可以看出,在具有头像的第一个块之后有一个间隙,在文本块之后也有一个间隙。 如何修复,以便到处都有相等的空间,以便所有元素的类型都为valign:True?
结果如下:
我更正了代码,同时将卡片小部件添加到KivyMD-
MDUserAnimationCard ,该小部件实现了此行为:
您创建的全部内容将显示在用户卡下。 如果内容的高度超过屏幕上的剩余空间,则将自动应用该内容的滚动功能:
接下来,只需将您创建的内容的类添加到
MDUserAnimationCard即可 :
def show_user_card(self): user_animation_card = MDUserAnimationCard( user_name="Lion Lion", path_to_avatar="./assets/african-lion-951778_1280.jpg", callback=main_back_callback) user_animation_card.box_content.add_widget(ContentForAnimCard()) user_animation_card.open()
本文已为您所熟知的MDStackFloatingButtons已迁移到KivyMD:
使用此小部件也已得到最大程度的简化:
def example_add_stack_floating_buttons(self): def set_my_language(instance_button): toast(instance_button.icon) screen = self.main_widget.ids.scr_mngr.get_screen('stack buttons') screen.add_widget(MDStackFloatingButtons( icon='lead-pencil', floating_data={ 'Python': 'language-python', 'Php': 'language-php', 'C++': 'language-cpp'}, callback=set_my_language))
已经实现了许多可使用的卡片,例如,帖子列表等:
用法示例:
MDCardPost(text_post='Card with text', swipe=True, callback=callback))
menu_items = [ {'viewclass': 'MDMenuItem', 'text': 'Example item %d' % i, 'callback': self.callback_for_menu_items} for i in range(2) ] MDCardPost( right_menu=menu_items, swipe=True, callback=callback text_post='Card with a button to open the menu MDDropDown'))
MDCardPost( likes_stars=True, callback=callback, swipe=True, text_post='Card with asterisks for voting.'))
buttons = ['facebook', 'vk', 'twitter'] text_post = \ "This is my favorite cat. He's only six months " "old. He loves milk and steals sausages :) " "And he likes to play in the garden." MDCardPost( source="./assets/kitten-1049129_1280.jpg", tile_text="Little Baby", tile_font_style="Headline", text_post=text_post, with_image=True, swipe=True, callback=callback, buttons=buttons))
从服务器,一个简单的文件管理器,PullToUpdate小部件下载内容的进度:
图书馆小部件的完整视频演示:
回到开始,我将说这一切仅对Android有用,因为,当然,我们不能在iOS平台的应用程序中使用Material Design。 我非常想适应KivyMD,以生成一个在iOS上看起来也是原生的UI。 从技术上讲,此任务没有障碍。 唯一的问题是我没有iOS设备,所以我不知道UI,动画和其他设计的外观。 当然,有针对iOS的设计指南,但这些指南只是指南,如果对开发KivyMD库感兴趣的人发送了iOS平台下应用程序参考设计的许多屏幕截图和动画,我感到很高兴。 例如,已经足够在KivyMD中实现,但仅适用于苹果。 对于sim,让我请假,敲我的总理,我希望一如既往地没用。