高度动画不起作用

Posted

技术标签:

【中文标题】高度动画不起作用【英文标题】:Height animation does not work 【发布时间】:2016-03-01 16:44:20 【问题描述】:

我正在尝试创建TableView,其行可以展开并在点击时显示一些内容。它有效,但不显示高度属性动画。我尝试添加ColorAnimation 并将扩展行颜色更改为黑色,效果很好,但由于某种原因它不适用于高度。 这是我的表格视图的代码:

TableView 
        id: myTableView
        anchors.right: parent.right
        anchors.left: parent.left
        anchors.bottom: parent.bottom
        anchors.bottomMargin: 12
        anchors.leftMargin: 10
        anchors.top: parent.top
        anchors.topMargin: 12
        anchors.rightMargin: 10

        model: myModel

        ListModel 
          //...
        

        rowDelegate: Item 
            id: myRowDelegate

            Rectangle 
                id: rect
                anchors.top: parent.top
                anchors.left: parent.left
                anchors.right: parent.right
                color: styleData.alternate ? "#d9e5ea" : "white"

                MouseArea 
                    anchors.fill: parent
                    onClicked: 
                        myRowDelegate.state = (myRowDelegate.state == "COLLAPSED") ? "EXPANDED" : "COLLAPSED";
                        console.log("click");
                    
                
            
            state: "COLLAPSED"
            states: [
                State 
                    name: "COLLAPSED"
                    PropertyChanges  target: myRowDelegate; height: 22; 
                ,
                State 
                    name: "EXPANDED"
                    PropertyChanges  target: myRowDelegate; height: 400; 
                   // PropertyChanges  target: rect; color: "black"; 
                
            ]
            transitions: [
                Transition 
                    from: "EXPANDED"
                    to: "COLLAPSED"
                    PropertyAnimation  property: height; duration: 400; 
                  //  ColorAnimation  duration: 400; 
                ,
                Transition 
                    from: "COLLAPSED"
                    to: "EXPANDED"
                    PropertyAnimation  property: height; duration: 400; 
                    //ColorAnimation  duration: 400; 
                
            ]
           
    

【问题讨论】:

【参考方案1】:

您必须使用属性名称作为字符串才能使其工作:

PropertyAnimation property:“身高”; duration: 400;

您也可以通过Behavior 实现这一点(为此删除过渡):

Behavior on height 
   NumberAnimation  duration: 400 

【讨论】:

非常感谢!我添加了"height",它现在按预期工作。你为我节省了很多时间,谢谢。 @d'''''''''''''''''''''''''''',请你澄清一下,为什么你不接受这个答案在它为您节省了很多时间之后?

以上是关于高度动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章

setDuration 在动画类中不起作用

jQuery 中的不透明度更改动画不起作用

UITableViewCell 折叠时展开和折叠动画不起作用

SVG 剪辑路径动画在 Firefox 上不起作用

jquery .animate 在我的网站上不起作用

swift animateWithDuration 在 iOS 7 中不起作用