Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!news.mixmin.net!aioe.org!news.mb-net.net!open-news-network.org!.POSTED.0.225.197.178.dynamic.wless.zhbmb00p-cgnat.res.cust.swisscom.ch!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: comp.lang.javascript Subject: Re: A simpler DOM in JS Date: Thu, 08 Feb 2018 01:47:38 +0100 Organization: PointedEars Software (PES) Lines: 80 Message-ID: <2435608.mvXUDI8C0e@PointedEars.de> References: <3087438.QJadu78ljV@PointedEars.de> <20800614.6Emhk5qWAg@PointedEars.de> <1fcf518b-5771-46ba-885d-3565ece3ca42@googlegroups.com> <2311948.Lt9SDvczpP@PointedEars.de> <1944765.Mh6RI2rZIc@PointedEars.de> <1726220a-10da-4d5a-9ce6-c716290cf571@googlegroups.com> Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit Injection-Info: gwaiyur.mb-net.net; posting-host="0.225.197.178.dynamic.wless.zhbmb00p-cgnat.res.cust.swisscom.ch:178.197.225.0"; logging-data="3710"; mail-complaints-to="abuse@open-news-network.org" User-Agent: KNode/4.14.2 Cancel-Lock: sha1:t7DK8k5z4I4abixkll+pZ4fk15Y= X-Face: %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&. Thomas 'PointedEars' Lahn wrote: >> Michael Haufe (TNO) wrote: >> > Thomas 'PointedEars' Lahn wrote: >> >> [...] >> >> [Android layout XML] >> > >> > While I like the declarative nature, the use of layout containers I >> > find iffy. How you do manage dynamic layouts? >> Depends. “Dynamic” as in…? > > As in, if I rotate the screen and I want LinearLayout to become > RelativeLayout, what do I do? Suppose you have res/layout/activity_main.xml that uses LinearLayout, then create res/layout-land/, copy the XML file there (keep the filename), and in the copy change LinearLayout to RelativeLayout (but see also RecyclerView.LayoutManager subclasses, which work better with listings). Now, that does _not_ mean that you have to maintain all the *content* twice (or more): you can use *fragments* to include the same content in different view groups. (In the course we learned to use fragments precisely for handling landscape mode.) See also: And that is only one of many specializations that you can implement this way (which I called “suffixed resource directories” before). [One of them that ought also be mentioned is internationalization, which (AISB) would be a PITA if you did in in Java code: just create e.g. res/values-fr/strings.xml for the text that should be displayed when the user uses the French locale. If you refer to “@string/…” in your layouts, or use getString(R.string.…) throughout your Java code, then you may not have to customize anything else (of course, French words tend to be longer, so maybe it needs layout tweaking, too). You can give that XML file to your translators, and its structure is very simple so they do not have to be coders also, as with GNU gettext. Compare that to language switches in Java code. ] This also has to do with what I alluded to earlier: As *you* know, if you have XML, you can easily convert it to *anything* using XSLT (even on the fly), for example SVG. I do not know how Android Studio 3.0.1 does the visualization, but it also contains a visual layout editor. If you select there that you want a specific landscape layout, for example, then it does what I described above (except the last step), and opens the copy. [However, if you know in advance that you want displayed properly in both modes, you should first consider using a layout manager that does it automatically, such as a ConstraintLayout that uses resources for the spacing.] If you are seriously interested in learning Android development, I can highly recommend taking part in the Google Android Dev Challenge: The next Challenge should start in November, but you can start the nanodegree at any time. If the Challenge is on, and you submit a convincing rationale (like I did), you might even win the scholarship and do not have to pay anything for the course and the optional follow-up training that Google offers exclusively. >> Hmmm. HTML5 validation is actually more strict than HTML < 5 validation, >> enabled by a grammar that is algorithmic instead of declarative. But >> this also makes it more difficult to implement. > > s/algorithmic/procedural To me, procedural includes the concept of subroutines, which need not be the case with parser algorithms like those for HTML5. -- PointedEars FAQ: | | Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.