通过 QML 在 Android 中制作 Toast [英] make Toast in Android by QML
本文介绍了通过 QML 在 Android 中制作 Toast的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我还没有开始学习使用 QML 开发的 Android,我只是好奇 Toasts 好像是Android特有的widget,而Qt for Android好像没有现成的对应widget,那么如何在Android中通过QML实现一个Toast呢?
I have not started my learning Android developing by QML ,I just curious that Toasts seems to be a Android specific widget ,while Qt for Android seems doesn't have a ready-made corresponding widget, so how do you implement a Toast in Android by QML ?
推荐答案
可能是这样的..
这是 InfoBanner.qml
This is for InfoBanner.qml
import QtQuick 2.2
Loader {
id: messages
function displayMessage(message) {
messages.source = "";
messages.source = Qt.resolvedUrl("InfoBannerComponent.qml");
messages.item.message = message;
}
width: parent.width
anchors.bottom: parent.top
z: 1
onLoaded: {
messages.item.state = "portrait";
timer.running = true
messages.state = "show"
}
Timer {
id: timer
interval: 2500
onTriggered: {
messages.state = ""
}
}
states: [
State {
name: "show"
AnchorChanges { target: messages; anchors { bottom: undefined; top: parent.top } }
PropertyChanges { target: messages; anchors.topMargin: 100 }
}
]
transitions: Transition {
AnchorAnimation { easing.type: Easing.OutQuart; duration: 300 }
}
}
这是 InfoBannerComponent.qml
This is for InfoBannerComponent.qml
import QtQuick 2.2
Item {
id: banner
property alias message : messageText.text
height: 70
Rectangle {
id: background
anchors.fill: banner
color: "darkblue"
smooth: true
opacity: 0.8
}
Text {
font.pixelSize: 24
renderType: Text.QtRendering
width: 150
height: 40
id: messageText
anchors.fill: banner
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
color: "white"
}
states: State {
name: "portrait"
PropertyChanges { target: banner; height: 100 }
}
MouseArea {
anchors.fill: parent
onClicked: {
messages.state = ""
}
}
}
这是用于 main.qml
This is for main.qml
import QtQuick 2.3
import QtQuick.Window 2.2
Window {
visible: true
width: 360
height: 360
MouseArea {
anchors.fill: parent
onClicked: {
Qt.quit();
}
}
Text {
text: qsTr("Hello World")
anchors.centerIn: parent
}
InfoBanner {
id: messages
}
Component.onCompleted: messages.displayMessage("Hello World");
}
感谢 marxoft dot co dot uk 的 marxian
credit to marxian at marxoft dot co dot uk
这篇关于通过 QML 在 Android 中制作 Toast的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文