{ "id": "170206", "key": "TIMOB-25474", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "3", "description": "The problem is a duplicate of an existing issue.", "name": "Duplicate" }, "resolutiondate": "2018-04-13T17:44:11.000+0000", "created": "2017-11-02T12:24:29.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [], "versions": [ { "id": "19906", "description": "", "name": "Release 6.3.0", "archived": false, "released": true, "releaseDate": "2017-11-01" }, { "id": "19542", "description": "", "name": "Release 6.2.2", "archived": false, "released": true, "releaseDate": "2017-09-19" } ], "issuelinks": [ { "id": "56329", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "171149", "key": "TIMOB-25792", "fields": { "summary": "Android: Scrolling horizontal ScrollView within a vertical ScrollView should disable vertical scrolling", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2018-04-13T17:44:11.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "Scrollview works fine in SDK 5.5.1, the identical code compiled for SDK 6.3.0 the same scrollview does not work anymore.\r\n\r\nThis is urgent, I need to update my app for Android 7!!", "attachment": [], "flagged": false, "summary": "Android: scrollview not scrolling when moving from SDK 5.5.1 to 6.3.0", "creator": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "environment": null, "comment": { "comments": [ { "id": "430002", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "5.5.1 OK\r\n6.1.2 OK\r\n6.2.2 not ok\r\n6.3.0 not ok", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-11-02T12:48:10.000+0000", "updated": "2017-11-02T12:48:10.000+0000" }, { "id": "430015", "author": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~ray@raymondverbruggen.nl] Could you provide a test case and explain what behaviour is not working as expected?", "updateAuthor": { "name": "gmathews", "key": "gmathews", "displayName": "Gary Mathews", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-11-02T15:56:53.000+0000", "updated": "2017-11-02T15:56:53.000+0000" }, { "id": "430368", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~ray@raymondverbruggen.nl], we're unable to reproduce this issue. If you can send us a reproducible case, then that would be great. Thanks.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-11-09T23:55:34.000+0000", "updated": "2017-11-09T23:55:34.000+0000" }, { "id": "430912", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "The scrollview was part of a parent view.\r\nI was able to pin it down to the following changes:\r\n\r\nBasically width and height parameters, resp contentWidth and contentHeight.\r\nNo idea why that helped...\r\n\r\nexports.createForm = function(o) {\r\n\tvar container = Ti.UI.createView({\r\n\t\tlayout : 'vertical',\r\n\t\twidth: '100%',\r\n\t\theight: Ti.UI.SIZE,\r\n\t\tbackgroundColor : 'white'\r\n\t});\r\n\tvar fieldRefs = {};\r\n\tvar form = Ti.UI.createScrollView({\r\n\t\tcontentWidth : '100%',\r\n\t\tcontentHeight : Ti.UI.SIZE,\r\n\t\tshowVerticalScrollIndicator : true,\r\n\t\tshowHorizontalScrollIndicator : false,\r\n\t\tscrollType : 'vertical',\r\n\r\n\t\t// new stuff\r\n\t\tcontainer : container,\r\n\t\tfieldStyle : o.style || exports.STYLE_HINT,\r\n\t\taddField : addField,\r\n\t\taddFields : addFields\r\n\t});\r\n\r\n\tform.addFields(o.fields, fieldRefs);\r\n\r\n\tvar padding = Ti.UI.createLabel({\r\n\t\theight : 20\r\n\t});\r\n\tcontainer.add(padding);\r\n\r\n\tform.add(container);\r\n\r\n\t// Add this so each field can be accessed directly, if necessary\r\n\tform.fieldRefs = fieldRefs;\r\n\r\n\treturn form;\r\n};\r\n\r\n\r\n\r\nexports.createForm = function(o) {\r\n\tvar container = Ti.UI.createView({\r\n\t\tlayout : 'vertical',\r\n\t\theight : 'auto',\r\n\t\tborderRadius : 5,\r\n\t\tborderWidth : 0,\r\n\t\tbackgroundColor : 'white'\r\n\t});\r\n\tvar fieldRefs = {};\r\n\tvar form = Ti.UI.createScrollView({\r\n\t\tcontentHeight : 'auto',\r\n\t\tcontentWidth : 'auto',\r\n\t\tshowVerticalScrollIndicator : true,\r\n\t\tshowHorizontalScrollIndicator : true,\r\n\r\n\t\t// new stuff\r\n\t\tcontainer : container,\r\n\t\tfieldStyle : o.style || exports.STYLE_HINT,\r\n\t\taddField : addField,\r\n\t\taddFields : addFields\r\n\t});\r\n\r\n\tform.addFields(o.fields, fieldRefs);\r\n\r\n\tvar padding = Ti.UI.createLabel({\r\n\t\theight : 20\r\n\t});\r\n\tcontainer.add(padding);\r\n\r\n\tform.add(container);\r\n\r\n\t// Add this so each field can be accessed directly, if necessary\r\n\tform.fieldRefs = fieldRefs;\r\n\r\n\treturn form;\r\n};", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2017-11-17T13:55:21.000+0000", "updated": "2017-11-17T14:00:48.000+0000" }, { "id": "430937", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~ray@raymondverbruggen.nl], the code you've posted is incomplete. So, it's difficult to tell what's going on. But I did notice that your ScrollViews are set up to use a \"composite\" layout (not \"vertical\" or \"horizontal\" layouts).\r\n\r\nWould you mind doing a quick test on your end?\r\nTry setting the ScrollView's \"contentHeight\" property to a large value, such as 5000. Then check if it's scrollable.\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2017-11-17T19:29:05.000+0000", "updated": "2017-11-17T19:29:05.000+0000" }, { "id": "434568", "author": { "name": "gertjans", "key": "gertjans", "displayName": "Gertjan Smits", "active": true, "timeZone": "Europe/Berlin" }, "body": "I believe we have the same issue. In the following example I have a horizontal scrollview inside a vertical scrolling one. The parent (vertical scrolling) scrolls fine, the horizontal scrollview is 'moveable', but doesn't scroll as expected. It looks like if the don't move your finger only over the x-axis, the scrolling works, but as soon as you move up or down, the event goes to the parent (vertical) scrolling view.\r\n\r\nThe following is tested on 7.0.2.GA and worked fine before 6.\r\n\r\n{code:javascript}\r\nvar trace = Ti.API.error;\r\nvar window = Ti.UI.createWindow();\r\n\r\nvar verticalScrollView = Ti.UI.createScrollView({\r\n\twidth : Ti.UI.FILL,\r\n\theight : Ti.UI.FILL,\r\n\tcontentHeight : 'auto',\r\n\tcontentWidth : '100%',\r\n\tscrollType : 'vertical',\r\n\tlayout : 'vertical',\r\n\tbackgroundColor : \"white\"\r\n});\r\n\r\nvar horizontalScrollView = Ti.UI.createScrollView({\r\n\twidth : Ti.UI.FILL,\r\n\theight : 150,\r\n\tbackgroundColor : 'black',\r\n\tcontentHeight : '100%',\r\n\tcontentWidth : 'auto',\r\n\tscrollType : 'horizontal',\r\n\tlayout : 'absolute'\r\n});\r\n\r\nvar colors = ['red', 'green', 'blue'];\r\nfor (var i = 0, l = 10; i < l; i++) {\r\n\thorizontalScrollView.add(Ti.UI.createView({\r\n\t\tbackgroundColor : colors[i % colors.length],\r\n\t\twidth : 100,\r\n\t\theight : 150,\r\n\t\tleft : i * 110\r\n\t}));\r\n}\r\n\r\nverticalScrollView.add(Ti.UI.createLabel({\r\n\tcolor : 'black',\r\n\twidth : Ti.UI.FILL,\r\n\ttop : 20,\r\n\tleft : 20,\r\n\tright : 20,\r\n\tbottom : 20,\r\n\theight : Ti.UI.SIZE,\r\n\ttext : 'Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum.'\r\n}));\r\n\r\nverticalScrollView.add(horizontalScrollView);\r\n\r\nverticalScrollView.add(Ti.UI.createLabel({\r\n\tcolor : 'black',\r\n\twidth : Ti.UI.FILL,\r\n\ttop : 20,\r\n\tleft : 20,\r\n\tright : 20,\r\n\tbottom : 20,\r\n\theight : Ti.UI.SIZE,\r\n\ttext : 'Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Cras mattis consectetur purus sit amet fermentum. Donec id elit non mi porta gravida at eget metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam id dolor id nibh ultricies vehicula ut id elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam quis risus eget urna mollis ornare vel eu leo. Curabitur blandit tempus porttitor. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nulla vitae elit libero, a pharetra augue. Curabitur blandit tempus porttitor. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Sed posuere consectetur est at lobortis. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla. Etiam porta sem malesuada magna mollis euismod. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.'\r\n}));\r\n\r\nwindow.add(verticalScrollView);\r\nwindow.open();\r\n{code}\r\n", "updateAuthor": { "name": "gertjans", "key": "gertjans", "displayName": "Gertjan Smits", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-16T14:27:07.000+0000", "updated": "2018-02-16T14:27:07.000+0000" }, { "id": "434618", "author": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "body": "This is a real issue and is very easy to replicate, I am currently experiencing it myself.\r\n\r\nAs clearly stated by [~gertjans] it is trivial to reproduce the very obvious error that occurs. With that in mind, I took his exact same code and tried it, I have the same issues on 6.3.0 but not on 6.1.2.\r\n\r\nI then decided to modify the code slightly so there could be not question that any use of older constants like percentages or 'auto' would play a part. That also failed on 6.3.0 but worked on 6.1.2.\r\n\r\nSo my experience in my own app where this is now a blocker is easily replicated with the minimalist of code. My own code uses Alloy to perform all the operations that the code given by Gertjans Smits does, so this is not an Alloy related problem, simply a Ti problem.\r\n\r\nIt also affects all versions above 6.1.2 including the most recent one as far as I am able to determine and also shown by both other people including the original reporter [~ray@raymondverbruggen.nl] expressing their concern about this issue.\r\n\r\nI have provided my variation on the code provided above. I have simply tweaked some constants, increased the colour pool, re-ordered a couple of parts with named labels. All with the aim of showing just how easy this is to replicate.\r\n\r\nI have also added properties that should not be required; bubbleeParent and canCancelEvents. All variations failed to provide any changes other than total failure. The last time I saw this sort of issue was just before Ti 3.x.\r\n\r\n{code:JavaScript}\r\nvar colors = [ '#1abc9c', '#2ecc71', '#3498db', '#9b59b6', '#f1c40f', '#e67e22', '#e74c3c', '#bdc3c7', '#7f8c8d', '#2c3e50' ];\r\n\r\nvar win = Ti.UI.createWindow();\r\nvar verticalScrollView = Ti.UI.createScrollView({\r\n backgroundColor : '#fff',\r\n contentHeight: Ti.UI.SIZE,\r\n contentWidth: Ti.UI.FILL,\r\n height: Ti.UI.FILL,\r\n layout: 'vertical',\r\n scrollType: 'vertical',\r\n width: Ti.UI.FILL\r\n});\r\n\r\nvar horizontalScrollView = Ti.UI.createScrollView({\r\n backgroundColor: '#000',\r\n // should not be required, no effect anyway\r\n bubbleParent: false,\r\n // should not be required, no effect anyway\r\n canCancelEvents: true,\r\n contentHeight: 150,\r\n contentWidth: Ti.UI.SIZE,\r\n height: 150,\r\n layout: 'horizontal',\r\n scrollType: 'horizontal',\r\n width: Ti.UI.FILL\r\n});\r\n\r\nfor (var i = 0, l = 10; i < l; i++) {\r\n horizontalScrollView.add(Ti.UI.createView({\r\n backgroundColor: colors[i % colors.length],\r\n // should not be required, no effect anyway\r\n bubbleParent: false,\r\n height: 150,\r\n left: 5,\r\n right: 5,\r\n width: 100\r\n }));\r\n}\r\nvar headerLabel = Ti.UI.createLabel({\r\n bottom: 20,\r\n color: '#000',\r\n height: Ti.UI.SIZE,\r\n left: 20,\r\n right: 20,\r\n text: 'Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum.',\r\n top: 20,\r\n width: Ti.UI.FILL\r\n});\r\nvar footerLabel = Ti.UI.createLabel({\r\n bottom: 20,\r\n color: '#000',\r\n height: Ti.UI.SIZE,\r\n left: 20,\r\n right: 20,\r\n text: 'Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Cras mattis consectetur purus sit amet fermentum. Donec id elit non mi porta gravida at eget metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas sed diam eget risus varius blandit sit amet non magna. Nullam id dolor id nibh ultricies vehicula ut id elit. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Cras mattis consectetur purus sit amet fermentum. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Nullam quis risus eget urna mollis ornare vel eu leo. Curabitur blandit tempus porttitor. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Nulla vitae elit libero, a pharetra augue. Curabitur blandit tempus porttitor. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Sed posuere consectetur est at lobortis. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla. Etiam porta sem malesuada magna mollis euismod. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.',\r\n top: 20,\r\n width: Ti.UI.FILL\r\n});\r\nverticalScrollView.add(headerLabel);\r\nverticalScrollView.add(horizontalScrollView);\r\nverticalScrollView.add(footerLabel);\r\nwin.add(verticalScrollView);\r\nwin.open();\r\n{code}\r\n\r\nThis problem should be considered a blocker.", "updateAuthor": { "name": "core13", "key": "core13", "displayName": "Malcolm Hollingsworth", "active": true, "timeZone": "Europe/London" }, "created": "2018-02-18T21:58:00.000+0000", "updated": "2018-02-18T21:58:00.000+0000" }, { "id": "434687", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Okay. We're able to reproduce it now. The issue is with scrolling a child \"horizontal\" ScrollView within a parent \"vertical\" ScrollView. All other nested child views scroll as expected (ie: vertical ScrollViews/TableView/ListView within a vertical ScrollView scroll fine).\r\n\r\nI've written this up as a separate ticket to better clarify the issue here: [TIMOB-25792]\r\nI've also posted a work-around in that same ticket.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-02-21T02:41:14.000+0000", "updated": "2018-02-21T02:41:14.000+0000" }, { "id": "434694", "author": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "body": "Great news Joshua!!", "updateAuthor": { "name": "ray@raymondverbruggen.nl", "key": "ray@raymondverbruggen.nl", "displayName": "Raymond Verbruggen", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-02-21T05:39:46.000+0000", "updated": "2018-02-21T05:39:46.000+0000" }, { "id": "436875", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We plan on resolving this issue in Titanium 7.2.0.\r\nKeep an eye on ticket [TIMOB-25792] for more details.\r\nThank you for reporting this issue.", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-04-13T17:44:05.000+0000", "updated": "2018-04-13T17:44:05.000+0000" } ], "maxResults": 10, "total": 10, "startAt": 0 } } }