如何在Ubuntu中使用条件布局
来源:互联网 发布:局域网常用网络命令 编辑:程序博客网 时间:2024/06/07 15:15
我们知道现代手机可以随着手持的方位发生改变而使得手机的方位也随着发生改变。对有些应用来说,我们也希望手机的布局也能跟随发生变化。另外一种情况是当我们的应用安装到不同屏幕尺寸的平台上,我们希望我们的布局会随着屏幕的尺寸不同而发生不同的变化。我们可以利用剩余的空间显示更多的内容。在Ubuntu平台中,我们使用一个称作为conditinal layout的机制来使得我们的布局发生改变。在conditional layout的上面可以阅读更多的内容。
1)下载我们在上节中设计好的应用
我们可以在如下的地址:
bzr branch lp:~liu-xiao-guo/debiantrial/developernews3
下载我们的源码。我们可以安装到手机上并熟悉该应用。有关应用的文章在链接可以看到。
2)使用conditional layout
conditional layout能够使得我们根据屏幕的尺寸来安排我们的控件。下面我们来具体讲解怎么实现它:
1)在我们的main.qml中加入如下的库:
import Ubuntu.Layouts 1.0
2)在main.qml中的PageStack之前,加入如下的代码:
Layouts { id: mainLayout anchors.fill: parent layouts: [ ConditionalLayout { name: 'flat' when: mainLayout.width >= units.gu(70) Page { id: flatPage title: i18n.tr("Developer News") tools: ToolbarItems { ToolbarButton { action: reloadAction } } Row { anchors.fill: parent ItemLayout { item: "articleList" width: parent.width >= units.gu(100) ? units.gu(50) : parent.width/2 height: parent.height } ItemLayout { item: "articleContent" width: parent.width - articleList.width height: parent.height } } } } ] onCurrentLayoutChanged: { if (mainLayout.currentLayout != 'flat') { mainView.activeLeafNode = pageStack.currentPage } }
3)在PageStack中的ArticleListView加入:
Layouts.item: "articleList"
4)在ArticleListView中的onClicked的如下代码:
pageStack.push(contentPage)
替换为:
if (mainLayout.currentLayout != "flat") { contentPage.title = instance.title pageStack.push(contentPage) }
5)在ArticleContent的定义中加入:
Layouts.item: "articleContent"
6)在main.qml的最后端加入:
}
现在我们已经完成了我们的工作。我们现在运行一下我们的应用。当我们把我们的应用的尺寸设为如下的值时:
width: units.gu(50) height: units.gu(75)
当我们把应用的尺寸设为如下的值时:
width: units.gu(100) height: units.gu(75)
应用显示为:
最终的源码在如下地址可以找到:
bzr branch lp:~liu-xiao-guo/debiantrial/developernews4
0 0
- 如何在Ubuntu中使用条件布局
- 如何在Scala中使用条件表达式
- 如何使用条件格式在 Excel 中隔行加底纹
- 如何在maven-antrun-plugin中使用if条件标签
- oracle 中如何在使用sum或其他聚合函数中,select查询条件处如何使用判断条件
- 如何在android中使用html作布局文件
- 在FP中如何设置条件断点
- xib中使用Autolayout进行布局,在代码里面如何进行修改布局
- 如何在eclipse中使用XYLayout布局?在此介绍如何把XYLayout导入到eclipse
- 在JavaFX中使用布局
- 如何在Ubuntu中使用root账号登录
- 如何在Ubuntu手机中使用前置照相机
- 如何在Ubuntu QML应用中使用Push Notification
- 如何在Ubuntu 14.04中使用Samba共享文件
- 如何在Ubuntu/Linux中使用LiveReload+Sublime Text 3
- 如何在REST API中使用查阅项的值作为过滤条件
- cakephp: 在条件中使用sql函数
- 在SELECT语句中使用条件逻辑
- 访问函数
- android.view.InflateException: Binary XML file line #95: Error inflating class(out of memory)
- linux应用编程之进程编程
- 超帧指数 和信标帧指数 ieee 8 0 2.15.4MAC 协议分析 超帧 帧间隔 信标 帧 结构
- money
- 如何在Ubuntu中使用条件布局
- MapInfo Sql select
- Java 并发编程之 CountDownLatch
- Objective-C之run loop详解
- .dll和.lib文件的生成和使用 c++
- mydump导出数据的用法
- Please update ADT to the latest version.
- 不可错过的10个超棒jQuery表单操作代码片段
- bitbake helloworld创建