{ "id": "133531", "key": "TIMOB-17357", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "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": [ { "id": "16593", "description": "Release 4.0.0", "name": "Release 4.0.0", "archived": false, "released": true, "releaseDate": "2015-05-21" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2015-01-30T00:35:32.000+0000", "created": "2014-07-22T16:22:47.000+0000", "epic": { "id": 134539, "key": "TIMOB-17487", "name": "Android: Support Android-L Functionality", "summary": "Android: Support Android 5.0 Functionality", "color": { "key": "color_7" }, "done": false }, "priority": { "name": "High", "id": "2" }, "labels": [ "android-l", "module_materialtheme", "qe-manualtest", "qe-testadded" ], "versions": [], "issuelinks": [ { "id": "39834", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "outwardIssue": { "id": "134631", "key": "TIDOC-1828", "fields": { "summary": "Android Material Theme", "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": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "42784", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "outwardIssue": { "id": "139259", "key": "TISTUD-7044", "fields": { "summary": "Alert users they will need to install Android SDK 21 to use Titanium SDK 3.4.2", "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": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "42943", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "133532", "key": "TIMOB-17358", "fields": { "summary": "Android: Refactor notifications", "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": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "45258", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "142613", "key": "TIMOB-18356", "fields": { "summary": "Android: Deprecate ActionBar Tabs", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "None", "id": "6" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "45259", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "142620", "key": "TIMOB-18357", "fields": { "summary": "Android: Support Toolbar", "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": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "47707", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "147807", "key": "TIMOB-18905", "fields": { "summary": "Android: Update Appcompat Lib to 22.1 & Alert Dialogs with material ", "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": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "47845", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "148055", "key": "TIMOB-18934", "fields": { "summary": "Android: Failed to package application if API Level 21 not installed. Process exit value was 1", "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": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "45218", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "143708", "key": "TIMOB-18471", "fields": { "summary": "Android: Improve Tabs UI", "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": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2015-05-21T13:31:59.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": "The material theme provides a new style for your app, system widgets that let you set their color palette, and default animations for touch feedback and activity transitions.", "attachment": [ { "id": "53873", "filename": "KSAfter.png", "author": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-28T22:25:52.000+0000", "size": 83740, "mimeType": "image/png" }, { "id": "53872", "filename": "KSBefore.png", "author": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-28T22:25:52.000+0000", "size": 109930, "mimeType": "image/png" }, { "id": "49939", "filename": "MaterialDark.png", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-07-22T16:28:29.000+0000", "size": 88935, "mimeType": "image/png" }, { "id": "49940", "filename": "MaterialLight.png", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-07-22T16:28:29.000+0000", "size": 82081, "mimeType": "image/png" }, { "id": "52459", "filename": "timob17357.zip", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-11T19:00:42.000+0000", "size": 639805, "mimeType": "application/zip" } ], "flagged": false, "summary": "Android: Support Material Theme", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "closedSprints": [ { "id": 241, "state": "closed", "name": "2014 Sprint 22 SDK", "startDate": "2014-10-27T22:25:43.407Z", "endDate": "2014-11-08T01:00:00.000Z", "completeDate": "2014-11-10T20:10:00.899Z", "originBoardId": 114 }, { "id": 291, "state": "closed", "name": "2015 Sprint 01 SDK", "startDate": "2015-01-03T01:00:00.000Z", "endDate": "2015-01-17T01:00:00.000Z", "completeDate": "2015-01-19T17:24:40.828Z", "originBoardId": 114 }, { "id": 309, "state": "closed", "name": "2015 Sprint 02 SDK", "startDate": "2015-01-17T01:00:16.697Z", "endDate": "2015-01-31T01:00:00.000Z", "completeDate": "2015-02-02T14:36:09.696Z", "originBoardId": 114 }, { "id": 272, "state": "closed", "name": "2014 Sprint 25 SDK", "startDate": "2014-12-08T22:49:31.264Z", "endDate": "2014-12-22T01:00:00.000Z", "completeDate": "2015-01-05T18:18:28.523Z", "originBoardId": 114 } ], "comment": { "comments": [ { "id": "315390", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "As a part of this, we probably want to add support to customize the status/navigation bar.\r\n\r\nDepending on whether you can programmatically set certain values on the theme, there may need to be changes in the CLI.", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-07-22T23:28:22.000+0000", "updated": "2014-07-22T23:28:22.000+0000" }, { "id": "317051", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This might \"just work\" as noted by http://stackoverflow.com/questions/24545394/how-to-use-actionbaractivity-with-theme-material.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-08-05T07:49:57.000+0000", "updated": "2014-08-05T07:49:57.000+0000" }, { "id": "320371", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This requires an update to the AppCompat library which is not at GA status yet. Thus, we will be merging this to the master branch (not 3.4.0). Once Android L is closer to release and the proper components are available, we can slot this in. My goal is this would appear on the 3.4.X branch as soon as is feasible, and likely ship with 3.4.1.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-08-26T15:44:44.000+0000", "updated": "2014-08-26T15:44:44.000+0000" }, { "id": "331181", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Confirmed, we can merge this into 3.4.2.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-07T15:28:08.000+0000", "updated": "2014-11-07T15:28:08.000+0000" }, { "id": "331290", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-08T16:50:09.000+0000", "updated": "2014-11-08T16:50:09.000+0000" }, { "id": "331292", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I actually view these as separate. This is about allowing us to support the Material Guidelines (through the use of the new App Compat library). The second (TIMOB-17963) is about adopting changes throughout the SDK to bring us in line with updated practices.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-08T16:56:36.000+0000", "updated": "2014-11-08T16:56:36.000+0000" }, { "id": "331299", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Well, not sure where this issue belongs, but I looked into it and migrating tabs will be the main issue. The Toolbar is essentially a normal view so it doesn't allow putting tabs inside of it. Thus all the tab API in the action bar is deprecated. The action bar tabs will need to be migrated to PagerTabStrip or something similar (the tab content itself must be in a ViewPager as already in 3.5.0 and in this PR https://github.com/appcelerator/titanium_mobile/pull/6008 ). Moving to PagerTabStrip is not a huge task, but the action bar tabs had an advantage which is not available in Lollipop: in landscape mode the tabs moved into the action bar itself, and a lot of screen real estate was saved... There is no solution for this at the moment..... And indeed, if you check out the new Google Play app, for example, it only works in portrait mode on my S4....\r\nIf you do want this in 3.4.2 then I suggest merging https://github.com/appcelerator/titanium_mobile/pull/6008 (ready to merge for 3.5.0 and easy for 3.4.2, already did it in my 3_4_X fork), then we need to do the change I outlined above (use PagerTabStrip below the Toolbar) - and recommend no landscape mode on tabbed apps on phones - like the Google Play app.", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-08T21:34:07.000+0000", "updated": "2014-11-08T21:37:13.000+0000" }, { "id": "331381", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "In any case I suggest you create an API 21 branch off the current master, I think there are too many changes for this to go into 3.4.x\r\nHopefully it can be merged back into master prior to 3.5.0.GA release", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-10T16:11:23.000+0000", "updated": "2014-11-10T16:11:23.000+0000" }, { "id": "331648", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This ticket is fixed by this PR https://github.com/appcelerator/titanium_mobile/pull/6247.\r\nFor FR, please run the attached project \"timob17375\" on 5.0 emulator/device. Should see the app title bar is blue, the textfield and the cursor are green.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-11T19:07:20.000+0000", "updated": "2014-11-11T19:07:20.000+0000" }, { "id": "331669", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "[~pwang] since we're using appcompat shouldn't this work on all Android versions supported by Titanium, not just Android 5.0? ", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-11T20:21:15.000+0000", "updated": "2014-11-11T20:21:15.000+0000" }, { "id": "331689", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "It should be. But when we run the attached app on a Android 4.x device, the textfield and the cursor are black *not* green. The same behavior for a native Android app. Seems although appcompat library supports material theme on all Android versions, the behaviors are not exactly the same on different Android versions.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-11T21:42:27.000+0000", "updated": "2014-11-11T21:42:27.000+0000" }, { "id": "331753", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "So if possible it would be good to see an example of how to style such elements for all Android versions, though I assume that over time appcompat will take care of it.", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-12T05:09:09.000+0000", "updated": "2014-11-12T05:09:09.000+0000" }, { "id": "331798", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "[~pwang] I found an explanation regarding the non-tinted widgets on pre-Lollipop versions. See https://chris.banes.me/2014/10/17/appcompat-v21/ , the FAQ at the bottom: \r\n{quote}\r\nWhy is my EditText (or other widget listed above) not being tinted correctly on my pre-Lollipop device?\r\n\r\nThe widget tinting in appcompat works by intercepting any layout inflation and inserting a special tint-aware version of the widget in its place. For most people this will work fine but I can think of a few scenarios where this won’t work including:\r\n\r\nYou have your own custom version of the widget (i.e. you’ve extended EditText)\r\nYou are creating the EditText without a LayoutInflater (i.e. calling new EditText()).\r\nYou are hooking up to the LayoutInflater’s Factory.\r\nThe special tint aware widgets are currently hidden because they’re an unfinished implementation detail.\r\n{quote}\r\nSo it appears that this stuff will have to wait until Google finishes the implementation. So this can't go into a GA release since (apparently) there is no way for us to style some elements at the moment with API21. For example checkboxes in a test app were barely visible with this SDK.\r\n", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-12T10:46:05.000+0000", "updated": "2014-11-12T10:48:12.000+0000" }, { "id": "331808", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Also tried this with a test app using tabs on an API 21 emulator. Looked OK when in portrait mode. When the emulator was rotated to landscape the tab indicator was gone. Again, the ActionBar navigation APIs, tabs, etc are deprecated. So please accept the PR I noted above, and then we need to switch all the ActionBar tab APIs to something like what was done in the Google IO app: \r\nhttps://github.com/google/iosched/blob/master/android/src/main/java/com/google/samples/apps/iosched/ui/widget/SlidingTabLayout.java\r\n\r\n ", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-12T12:02:58.000+0000", "updated": "2014-11-12T12:02:58.000+0000" }, { "id": "332070", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Why is this resolved when it's not really usable on pre-L devices and issues with tabs?", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-13T20:50:42.000+0000", "updated": "2014-11-13T20:50:42.000+0000" }, { "id": "332168", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Please provide guidance on how to style a dark themed app. I added a checkbox and picker to the attached app with the following results, and made the window background black (Theme.AppCompat is dark, should handle it fine). The app built with current 3.5.0 is not usable on a KitKat device - note the checkbox and text field are not visible, nor is the text in the picker:\r\n[Android 5.0 emulator built with 3.5.0|http://imgur.com/cTGYFp2]\r\n[KitKat device built with 3.5.0|http://imgur.com/JXnJDvK]\r\n[KitKat device built with 3.4.2|http://imgur.com/56HoWTY]\r\n\r\nHere is the app:\r\n{code}\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor:'black',\r\n title: 'Material Theme'\r\n});\r\n \r\nvar textField = Ti.UI.createTextField({\r\n top: '400dp',\r\n width: 200,\r\n color: \"white\"\r\n});\r\nvar checkbox = Ti.UI.createSwitch({title: 'checkbox', top: '50dp', color: 'white', style: Titanium.UI.Android.SWITCH_STYLE_CHECKBOX});\r\nwin.add(checkbox);\r\nwin.add(textField);\r\nvar picker = Ti.UI.createPicker({\r\n top:'100dp'\r\n});\r\n\r\nvar data = [];\r\ndata[0]=Ti.UI.createPickerRow({title:'Bananas'});\r\ndata[1]=Ti.UI.createPickerRow({title:'Strawberries'});\r\ndata[2]=Ti.UI.createPickerRow({title:'Mangos'});\r\ndata[3]=Ti.UI.createPickerRow({title:'Grapes'});\r\n\r\npicker.add(data);\r\npicker.selectionIndicator = true;\r\n\r\nwin.add(picker);\r\nwin.open();\r\n{code}\r\n\r\nTo run the app with 3.4.2 I created a default Titanium app, replaced the content of app.js with the above code, and added the following to tiapp.xml:\r\n{code}\r\n \r\n \r\n \r\n \r\n \r\n{code}", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-14T06:59:29.000+0000", "updated": "2014-11-14T06:59:29.000+0000" }, { "id": "332212", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We are somewhat caught between a rock and a hard place. If we want to provide Material support, we need the AppCompat library, however, there are the issues you have raised. FWIW, 3.4.2 is not going out immediately, so we are hoping Google will provide an update. Otherwise, we will need to look for workarounds.\r\n\r\nIn the meantime, [a discussion|https://m.google.com/app/basic/stream/z12wytojryatwley304cj3pqryaugdnpuwc0k?cbp=xwaw2t2feuqr&partnerid=operamini1104&sview=27&cid=5&soc-app=115&soc-platform=1&aa=ac&spath=/app/basic/%2BWojtekKalicinski/posts&sparm=cbp%3D8qbn6wbnd2l0%26partnerid%3Doperamini1104%26sview%3D27%26cid%3D5%26soc-app%3D115%26soc-platform%3D1%26spath%3D/app/basic/%252BMaurycyDamianWasilewski/posts%26sparm%3Dcbp%253Dvh4nl9q2zvpx%2526partnerid%253Doperamini1104%2526sview%253D27%2526cid%253D5%2526soc-app%253D115%2526soc-platform%253D1%2526spath%253D/app/basic/%25252BMaurycyDamianWasilewski/posts%2526sparm%253Dcbp%25253Daixcgybw4w6n%252526partnerid%25253Doperamini1104%252526sview%25253D20%252526cid%25253D5%252526soc-app%25253D115%252526soc-platform%25253D1%252526spath%25253D/app/basic/photos/%2525252BMaurycyDamianWasilewski/album/5944211647300246225/5944211644056603618%252526sparm%25253Dcbp%2525253D1c8jonqdp0vz7%25252526partnerid%2525253Doperamini1104%25252526sview%2525253D28#comment] I found around this topic.\r\n\r\n", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-14T16:43:21.000+0000", "updated": "2014-11-14T16:43:29.000+0000" }, { "id": "332220", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "[~ingo] I doubt those kinds of workarounds will work on all the widgets..... \r\nAs a Titanium app developer I would prefer the 3_4_X branch is kept \"production worthy\" as close as possible, and major breaking stuff like this should be in a development branch. I'm frankly surprised it was pushed to master, and I certainly hope it doesn't go into 3_4_X until it's rock solid. The UI is so broken on pre-L devices, it will make even basic testing difficult, and I doubt that is in anyone's interest.\r\nI honestly think that merge should be reverted, and this should go into a development branch for now, not master.\r\n\r\nWe also don't know when Google will fill in the missing pieces, since as Chris Banes wrote, it works for people who inflate the widgets from XML, and that's the vast majority of native apps. So one way to attack this can be to do just that in Titanium.... Not extend the widget classes, and define them in XML layouts. Is this possible/realistic? The list of widgets is not huge....\r\n\r\nIt's also not just the widget tinting: as I wrote earlier, all Action Bar navigation modes are deprecated, and if you search on Stack Overflow you will see developers reporting crashes when using Action Bar tabs. I didn't experience a crash in the 5 minutes I tried it, but I saw right away that tab styling is broken too.", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-14T17:03:03.000+0000", "updated": "2014-11-14T17:08:52.000+0000" }, { "id": "332224", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~mokesmokes] Please note that master *is* our development branch. It is debatable if we should revert the merge for 3.4.X. We will discuss.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-14T17:08:41.000+0000", "updated": "2014-11-14T17:08:41.000+0000" }, { "id": "332225", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "I understand it is your development branch, but traditionally it is kept quite clean from breaking stuff. The general perception is fairly stable but not QA'ed to production. But this change is downright experimental at this point.\r\nKnowing it is so experimental, why would you even consider pushing it to two branches?\r\n\r\nJust so we're on the same page: I'm all for the Material theme, and if it works it makes styling and branding lots easier, and we should definitely push it! But only if it works :)", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-14T17:11:19.000+0000", "updated": "2014-11-14T17:14:23.000+0000" }, { "id": "332282", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "{quote}\r\n... since as Chris Banes wrote, it works for people who inflate the widgets from XML, ...\r\n{quote}\r\n\r\nI doubt it works for inflating the widgets from XML. I ran a native Android app to test several different widgets using appcompat lib and the \"@style/Theme.AppCompat\" theme. I attached two screenshot for 5.0 emulator (nativeApp_5.0emulator.png) and 4.2.2 emulator (nativeApp_4.2.2emulator.png). And we can see it shows exactly the same issues in [~mokesmokes]'s Titanium test case.\r\n\r\n\r\n**************************************************************************************************\r\n*Update:*\r\nMy mistake. I did something wrong in my last test. Now I get the native Android app work fine on pre-Lollipop emulator. \r\nI deleted the two screenshots to avoid future confusion.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-14T19:00:09.000+0000", "updated": "2014-11-17T22:46:36.000+0000" }, { "id": "332356", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "[~pwang] [~ingo] here's a quick test showing that inflated widgets are indeed tinted correctly on pre-L devices:\r\nhttps://github.com/appcelerator/titanium_mobile/pull/6356\r\nSimple PR to inflate EditText. It was a quick hack so the text field won't autofocus when the window is shown, and won't fire the postlayout event (since I deleted the TiEditText class), but other than that it seems to work fine.\r\nHere's a screen shot from my S4 running 4.4.2\r\nhttp://imgur.com/ZWd4u20\r\n", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-15T12:24:24.000+0000", "updated": "2014-11-15T15:24:12.000+0000" }, { "id": "332359", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "It was actually a no brainer to add the checkbox, switch, and spinner to the PR so I added them.\r\nUpdated image from a KitKat device:\r\nhttp://imgur.com/ucJir9J\r\nNotes:\r\n1. You may wish to add the postlayout event back (I suppose use addOnLayoutChangeListener for each of these)\r\n2. I didn't bother to add code to autofocus the EditText\r\nSo barring these issues it's basically done :)\r\n\r\nI still think it's key to make sure all of Titanium looks good for both light and dark themes.\r\nPlus it's still not ready for prime time since the deprecated ActionBar APIs are used (Tabs).\r\nThus I urge you guys to finally accept https://github.com/appcelerator/titanium_mobile/pull/6008 , and then remove all the deprecated Tab, NavigationMode APIs and integrate the SlidingTabsLayout from the Google I/O app, and use Toolbar. None of the Javascript APIs should change.\r\n\r\nUpdate: the Switch titleOff and titleOn properties should be removed from the Javascript API. I got it to show, but it shows up in tiny font inside the switch handle, not even close to being readable. So basically with the SwitchCompat we have a switch very similar to iOS - no text :) (PR updated accordingly)\r\n\r\nAlso checked changing the parent theme to Theme.AppCompat.Light.DarkActionBar, setting Window backgroundColor to white, checkbox and textfield color param to black. Looks good on both KitKat and Lollipop.\r\nhttp://imgur.com/1qoDuxJ", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-15T15:22:24.000+0000", "updated": "2014-11-16T10:31:56.000+0000" }, { "id": "333846", "author": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "body": "To bring my 2 cents on this matter, this was enough for me. Everything now works with custom classes\r\nhttp://stackoverflow.com/questions/26670234/material-design-for-subclass-of-edittext", "updateAuthor": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "created": "2014-11-26T09:49:08.000+0000", "updated": "2014-11-26T09:49:08.000+0000" }, { "id": "333848", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": ":)\r\nBut this is using internal classes.... could break at any time, especially since Google said the implementation is incomplete.\r\nDo all the relevant classes have such internal implementations? Got a link to their source code?\r\n", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-11-26T10:09:11.000+0000", "updated": "2014-11-26T10:09:11.000+0000" }, { "id": "333850", "author": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "body": "Yes but those classes should become visible in the future. Yes it is a quick fix, but it will work as long as you don't update appcompat, so good with me!", "updateAuthor": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "created": "2014-11-26T10:29:32.000+0000", "updated": "2014-11-26T10:29:32.000+0000" }, { "id": "334759", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Heads up: We will get crashes on Samsung 4.2.2 devices if ProGuard configuration is incorrect, see https://code.google.com/p/android/issues/detail?id=78377", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2014-12-04T05:05:50.000+0000", "updated": "2014-12-04T05:05:50.000+0000" }, { "id": "335114", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~mokesmokes] thanks for the note.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-12-05T20:34:29.000+0000", "updated": "2014-12-05T20:34:29.000+0000" }, { "id": "338147", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "As mentioned by [~farfromrefuge], using the internal classes eg. https://android.googlesource.com/platform/frameworks/support/+/master/v7/appcompat/src/android/support/v7/internal/widget/TintEditText.java does make it work. Just need to extend TintEditText instead of EditText for TiEditText.\r\n\r\n[~mokesmokes] : And it does seem that all the relevant classes have such an internal implementation: https://android.googlesource.com/platform/frameworks/support/+/master/v7/appcompat/src/android/support/v7/internal/widget (all the Tint versions)\r\n\r\nThis could possibly work. Would this be a good idea?\r\n\r\nNote: If this way is used, probably need to check on this classes when the AppCompat is updated too.", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-01-07T09:27:05.000+0000", "updated": "2015-01-07T09:31:22.000+0000" }, { "id": "338151", "author": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "body": "It seems that the way it is being \"injected\" is through here:\r\nAt line 751\r\nhttps://android.googlesource.com/platform/frameworks/support/+/master/v7/appcompat/src/android/support/v7/app/ActionBarActivityDelegateBase.java ", "updateAuthor": { "name": "msamah", "key": "msamah", "displayName": "Ashraf Abu", "active": false, "timeZone": "Asia/Singapore" }, "created": "2015-01-07T10:27:35.000+0000", "updated": "2015-01-07T10:27:35.000+0000" }, { "id": "338153", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "My preference would be to create the widgets in a standard manner, thus simplifying support and upgrading down the road. The only real issue with this PR https://github.com/appcelerator/titanium_mobile/pull/6356 is that for [~pwang] there were some issues with the keyboard showing up or not - while in my case the keyboard showed up just fine on the same test apps. \r\nI think we should investigate this and try to close in standard fashion - at this point I don't see why we can't just use XML layouts where necessary.\r\n\r\nLet's also not forget that there are two more related issues that need to be tackled:\r\n1. ActionBar tabs (and all other ActionBar navigation modes) are deprecated in API21. I can confirm I saw TabGroup issues with this support library. The solution is to change the TabGroup code to use Google's Sliding Tabs samples, or perhaps integrate this library: https://github.com/neokree/MaterialTabs\r\n2. Use Toolbar instead of ActionBar in the SDK, which opens up a lot of design options (Toolbar is easily customized and can behave as a normal view, unlike ActionBar).", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-01-07T12:49:20.000+0000", "updated": "2015-01-07T12:49:20.000+0000" }, { "id": "338178", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I agree with Mark that creating widgets from XML is a better way, except for EditText. Here is the issue I concerned: TIMOB-4755. I tested TIMOB-4755 on 4.0 and 4.4.4 device. If we don't override the method onCheckIsTextEditor(), we still can see the soft keyboard appear and disappear in a flash. ", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-07T18:25:29.000+0000", "updated": "2015-01-07T18:32:33.000+0000" }, { "id": "338212", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "[~pwang] I believe this issue may be addressed by using EditText.setInputType()\r\n[http://developer.android.com/reference/android/widget/TextView.html#setInputType(int)]\r\nThere are various Q&A's on this as well: \r\nhttp://stackoverflow.com/questions/5803193/android-disable-soft-keyboard-at-all-edittexts\r\nhttp://stackoverflow.com/questions/10636635/disable-keyboard-on-edittext\r\netc", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-01-07T19:48:40.000+0000", "updated": "2015-01-07T20:01:41.000+0000" }, { "id": "338410", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/6552\r\nFor FR:\r\n1. Please run the test case below with a material theme. Should see tint on the text field, checkbox and switch. All the widgets and the \"postlayout\" event should work fine.\r\n{code}\r\n--------------------------- /platform/android/res/values/custom_theme.xml ---------------------------\r\n\r\n\r\n\r\n\r\n{code}\r\n{code}\r\n--------------------------- app.js ---------------------------\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor:'black',\r\n title: 'Material Theme',\r\n theme: \"materialTheme\",\r\n layout: \"vertical\"\r\n});\r\n \r\nvar textField = Ti.UI.createTextField({\r\n width: 200,\r\n color: \"white\"\r\n});\r\n\r\nvar checkbox = Ti.UI.createSwitch({title: 'checkbox', color: 'white', style: Titanium.UI.Android.SWITCH_STYLE_CHECKBOX});\r\n\r\nvar s = Ti.UI.createSwitch({\r\n\tstyle: Titanium.UI.Android.SWITCH_STYLE_TOGGLEBUTTON,\r\n\ttitleOn:'Enabled',\r\n \ttitleOff:'Disabled'\r\n});\r\n\r\nvar s_old = Ti.UI.createSwitch({\r\n\tstyle: Titanium.UI.Android.SWITCH_STYLE_TOGGLEBUTTON_OLD,\r\n\ttitleOn:'Enabled',\r\n \ttitleOff:'Disabled'\r\n});\r\n\r\nvar picker = Ti.UI.createPicker();\r\n \r\nvar data = [];\r\ndata[0]=Ti.UI.createPickerRow({title:'Bananas'});\r\ndata[1]=Ti.UI.createPickerRow({title:'Strawberries'});\r\ndata[2]=Ti.UI.createPickerRow({title:'Mangos'});\r\ndata[3]=Ti.UI.createPickerRow({title:'Grapes'});\r\n \r\npicker.add(data);\r\npicker.selectionIndicator = true;\r\n \r\ntextField.addEventListener(\"postlayout\", function(e){\r\n\tTi.API.info(\"*************** postlayout: text field\");\r\n});\r\n\r\ncheckbox.addEventListener(\"postlayout\", function(e){\r\n\tTi.API.info(\"*************** postlayout: checkbox\");\r\n});\r\n\r\ns.addEventListener(\"postlayout\", function(e){\r\n\tTi.API.info(\"*************** postlayout: switch\");\r\n});\r\n\r\ns_old.addEventListener(\"postlayout\", function(e){\r\n\tTi.API.info(\"*************** postlayout: toggle button\");\r\n});\r\n\r\npicker.addEventListener(\"postlayout\", function(e){\r\n\tTi.API.info(\"*************** postlayout: picker\");\r\n});\r\n\r\nwin.add(textField);\r\nwin.add(checkbox);\r\nwin.add(s);\r\nwin.add(s_old);\r\nwin.add(picker);\r\nwin.open();\r\n{code}\r\n\r\n2. Please run KS to make sure nothing is broken.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-08T20:20:30.000+0000", "updated": "2015-01-08T20:20:30.000+0000" }, { "id": "341147", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "A note regarding the KS screenshots: Current Android design guidelines specify that tabs must be all text or all icons but not both:\r\n[tab design guidelines|http://www.google.com/design/spec/components/tabs.html#tabs-content] : \"Do not combine text labels with icons. Use either all text labels or all icon labels.\"\r\n\r\nAdditionally, as I wrote earlier ActionBar tabs are deprecated in API21, and tabs will not work well on older APIs either with this AppCompat version - I have seen all kinds of issues (such as in the attached After image). We need to migrate to something like [MaterialTabs|https://github.com/neokree/MaterialTabs] or [PagerSlidingTabStrip|https://github.com/jpardogo/PagerSlidingTabStrip]", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-01-29T12:43:18.000+0000", "updated": "2015-01-29T15:42:03.000+0000" }, { "id": "341274", "author": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-29T21:54:19.000+0000", "updated": "2015-01-29T21:54:19.000+0000" }, { "id": "341299", "author": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Thanks Mark. Already created two tickets related to the tab (TIMOB-18356) and Toolbar (TIMOB-18357) but forgot to link them. Now they are linked.", "updateAuthor": { "name": "pwang", "key": "pwang", "displayName": "Ping Wang", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-01-30T00:00:38.000+0000", "updated": "2015-01-30T00:00:38.000+0000" }, { "id": "342155", "author": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Mark, after some digging, I think that the UI difference is theme related. The before image is using Holo theme, while after is using Material theme. So I don't think this is a bug. Can you elaborate on the other issues you've seen using the latest Appcompat libraries regarding tabs? Thanks,", "updateAuthor": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-02-04T23:27:32.000+0000", "updated": "2015-02-04T23:27:32.000+0000" }, { "id": "342197", "author": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "body": "Yes, it is theme-related. But as all the ActionBar navigation modes are deprecated this particular AppCompat version will apparently not style them properly. It's been a while since I last tried it, but I recall issues when rotating the device to landscape mode - IIRC in that case the tab indicator went completely AWOL.\r\n\r\nI also think there are issues depending upon the device API level, e.g. there are folks reporting that their tabs [don't appear|http://www.reddit.com/r/androiddev/comments/2jmuec/material_design_tabs] at all with this AppCompat version: ", "updateAuthor": { "name": "mokesmokes", "key": "mokesmokes", "displayName": "Mark Mokryn", "active": true, "timeZone": "Asia/Jerusalem" }, "created": "2015-02-05T04:34:52.000+0000", "updated": "2015-02-05T04:41:52.000+0000" }, { "id": "346596", "author": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified the implementation. New properties related to material theme seem to work as expected.\r\nClosing.\r\n\r\nEnvironment:\r\nAppc Studio : 3.5.1.201412091616\r\nTi SDK : 4.0.0.v20150317234215\r\nCLI : 4.0.0-alpha\r\nAlloy : 1.6.0-alpha\r\nMAC Yosemite : 10.10.2\r\nNexus 5 - Android 5.1", "updateAuthor": { "name": "lchoudhary", "key": "lchoudhary", "displayName": "Lokesh Choudhary", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2015-03-19T22:13:48.000+0000", "updated": "2015-03-19T22:13:48.000+0000" } ], "maxResults": 44, "total": 44, "startAt": 0 } } }