/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 1 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . android . tools . lint . checks Ċ Ċ import Ġcom . android . tools . lint . detector . api . Detector Ċ Ċ class ĠWrong Id Detector Test Ġ: ĠAbstract Check Test () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Detector (): ĠDetector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrong Id Detector () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Basic () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Layout 1 , Ġm Layout 2 , Ġm Ids ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 4 : ĠError : ĠThe Ġid Ġ" button 5 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġone Ġof Ġ{ button 1 , Ġbutton 2 , Ġbutton 3 , Ġbutton 4 } Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Bottom ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 7 : ĠError : ĠThe Ġid Ġ" my _ id 3 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġone Ġof Ġ{ my _ id 0 , Ġmy _ id 1 , Ġmy _ id 2 } Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Right ="@ + id / my _ id 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 8 : ĠError : Ġ@ id / my _ id 1 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠRelative Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ id / my _ id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 5 : ĠWarning : ĠThe Ġid Ġ" my _ id 2 " Ġis Ġnot Ġreferring Ġto Ġany Ġviews Ġin Ġthis Ġlayout Ġ[ Unknown Id In Layout ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Left ="@ + id / my _ id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġerrors , Ġ 1 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Single File () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 4 : ĠError : ĠThe Ġid Ġ" button 5 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġone Ġof Ġ{ button 1 , Ġbutton 2 , Ġbutton 3 , Ġbutton 4 } Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Bottom ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 5 : ĠError : ĠThe Ġid Ġ" my _ id 2 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġmy _ id 3 Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Left ="@ + id / my _ id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 7 : ĠError : ĠThe Ġid Ġ" my _ id 3 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġmy _ id 2 Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Right ="@ + id / my _ id 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 1 . xml : 1 8 : ĠError : ĠThe Ġid Ġ" my _ id 1 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġone Ġof Ġ{ my _ id 2 , Ġmy _ id 3 } Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ id / my _ id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. files ( m Layout 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. incremental ( m Layout 1 . target RelativePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. run () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Sup pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ignore layout 1 , Ġm Layout 2 , Ġm Ids ĊĠĠĠĠĠĠĠ Ġ). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Sup pressed Single File () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( m Ignore layout 1 ). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest New Id Prefix () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / default _ item _ badges . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / video _ badges " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / detailed _ item . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Frame Layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ id / video _ badges " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / detailed _ item . xml : 1 0 : ĠError : Ġ@ id / video _ badges Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠRelative Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ id / video _ badges " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest S iblings () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / siblings . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠCopyright Ġ( C ) Ġ 2 0 1 3 ĠThe ĠAndroid ĠOpen ĠSource ĠProject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ Ġlimitations Ġunder Ġthe ĠLicense . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ--> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Top =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / linear Layout 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ to Right Of ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : orientation =" vertical " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ id / button 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ LinearLayout > ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 7 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ to Right Of ="@ id / button 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ to Right Of ="@ + id / button 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / siblings . xml : 5 5 : ĠError : Ġ@ id / button 5 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠRelative Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / siblings . xml : 5 6 : ĠError : Ġ@ id / button 6 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠRelative Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ to Right Of ="@ id / button 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / siblings . xml : 6 3 : ĠError : Ġ@ + id / button 5 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠRelative Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / siblings . xml : 6 4 : ĠError : Ġ@ + id / button 6 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠRelative Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ to Right Of ="@ + id / button 6 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest S iblings In Constraint Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / constraint . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . constraint . Constraint Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" 8 0 0 dp " Ġandroid : layout _ height =" 1 1 4 3 dp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / com . google . t nt . sher pa . Constraint Layout "> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 1 " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / linear Layout 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : orientation =" vertical " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ LinearLayout > ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ android . support . constraint . Constraint Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / constraint . xml : 1 2 : ĠError : Ġ@ + id / button 5 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠConstraint Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Invalid Ids 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSee Ġhttps :// code . google . com / p / android / issues / detail ? id = 5 6 0 2 9 ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / invalid _ ids . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠCopyright Ġ( C ) Ġ 2 0 1 3 ĠThe ĠAndroid ĠOpen ĠSource ĠProject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ~ Ġlimitations Ġunder Ġthe ĠLicense . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ--> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + menu / Reload " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Top =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ +/ id _ foo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : orientation =" vertical " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + my id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + string / wh ate vs " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ LinearLayout > ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / invalid _ ids . xml : 2 3 : ĠError : ĠID Ġdefinitions Ġmust Ġbe Ġof Ġthe Ġform Ġ@ + id / name ; Ġtry Ġusing Ġ@ + id / menu _ Reload Ġ[ Invalid Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + menu / Reload " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / invalid _ ids . xml : 3 1 : ĠError : ĠID Ġdefinitions Ġmust Ġbe Ġof Ġthe Ġform Ġ@ + id / name ; Ġtry Ġusing Ġ@ + id /_ id _ foo Ġ[ Invalid Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ +/ id _ foo " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / invalid _ ids . xml : 3 7 : ĠError : ĠID Ġdefinitions Ġmust Ġbe Ġof Ġthe Ġform Ġ@ + id / name ; Ġtry Ġusing Ġ@ + id / my id _ button 5 Ġ[ Invalid Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + my id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / invalid _ ids . xml : 4 3 : ĠError : ĠID Ġdefinitions Ġmust Ġbe Ġof Ġthe Ġform Ġ@ + id / name ; Ġtry Ġusing Ġ@ + id / string _ wh ate vs Ġ[ Invalid Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + string / wh ate vs " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Invalid Ids 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// code . google . com / p / android / issues / detail ? id = 6 5 2 4 4 ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / invalid _ ids 2 . xml : 8 : ĠError : ĠID Ġdefinitions Ġmust Ġbe Ġof Ġthe Ġform Ġ@ + id / name ; Ġtry Ġusing Ġ@ + id / btn _ skip Ġ[ Invalid Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / btn / skip " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~~~~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / invalid _ ids 2 . xml : 1 6 : ĠError : ĠInvalid Ġid : Ġmissing Ġvalue Ġ[ Invalid Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id /" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / invalid _ ids 2 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / btn / skip " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Top =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id /" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Missing Namespace () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRegression Ġtest Ġfor Ġhttps :// code . google . com / p / android / issues / detail ? id = 2 2 7 6 8 7 ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġwe Ġproperly Ġhandle Ġa Ġmissing Ġnamespace ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / layout 3 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent " Ġandroid : id ="@ + id / tv _ portfolio _ title "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout _ below ="@ + id / tv _ portfolio _ title "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Self Reference () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġwe Ġhighlight Ġdirect Ġreferences Ġto Ġself ĊĠĠĠĠĠĠĠ Ġ// ĠRegression Ġtest Ġfor Ġhttps :// code . google . com / p / android / issues / detail ? id = 1 3 6 1 0 3 ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / layout 3 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent " Ġandroid : padding Left ="@ dim en / activity _ horizontal _ margin "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / tv _ portfolio _ title " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / tv _ portfolio _ title "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 9 : ĠError : ĠCannot Ġbe Ġrelative Ġto Ġself : Ġid = tv _ portfolio _ title , Ġlayout _ below = tv _ portfolio _ title Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / tv _ portfolio _ title "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Percent () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / test . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . percent . Percent Relative Layout ĠĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text view 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ gravity =" center " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ width Percent =" 5 0 %" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ height Percent =" 5 0 % "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text view 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ id / text view 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ margin Start Percent =" 2 5 %" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ margin End Percent =" 2 5 % "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ id / textView 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ width Percent =" 6 0 % "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ android . support . percent . Percent Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / test . xml : 1 8 : ĠError : ĠThe Ġid Ġ" textView 1 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġtext view 1 Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ id / textView 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Constraint Layout Cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / constraint . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . constraint . Constraint Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" 8 0 0 dp " Ġandroid : layout _ height =" 1 1 4 3 dp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / com . google . t nt . sher pa . Constraint Layout "> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ editor _ absolute X =" 2 4 dp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ editor _ absolute Y =" 2 6 dp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 4 " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Left Of ="@ + id / ty po " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ editor _ absolute X =" 1 5 0 dp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ editor _ absolute Y =" 9 4 dp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 5 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ android . support . constraint . Constraint Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / constraint . xml : 2 1 : ĠError : ĠThe Ġid Ġ" ty po " Ġis Ġnot Ġdefined Ġanywhere . Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Left Of ="@ + id / ty po " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / constraint . xml : 1 2 : ĠError : ĠCannot Ġbe Ġrelative Ġto Ġself : Ġid = button 4 , Ġlayout _ constraint Right _ to Right Of = button 4 Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Constraint Referenced Ids () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠValidate Ġid Ġlists Ġin Ġ< Barrier > Ġelements ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġtext 1 Ġis Ġa Ġsibling Ġdefined Ġin Ġthe Ġcurrent Ġlayout ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġtext 2 Ġis Ġnot Ġdefined Ġanywhere ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġtext 3 Ġis Ġnot Ġa Ġsibling Ġbut Ġdefined Ġin Ġthe Ġcurrent Ġlayout ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġmy _ id 1 Ġis Ġa Ġsibling Ġbut Ġdefined Ġin Ġa Ġvalues Ġfile ĊĠĠĠĠĠĠĠ Ġ// ĠĠ Ġmy _ id 0 Ġis Ġnot Ġa Ġsibling Ġand Ġdefined Ġin Ġa Ġvalues Ġfile ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / layout 3 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . constraint . Constraint Layout ĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . constraint . Barrier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / barrier " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : barrier Direction =" end " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Hello ĠWorld !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Bottom _ to Bottom Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Left _ to Left Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Top _ to Top Of =" parent " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Happy ĠNew ĠYear !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ id / my _ id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Bottom _ to Bottom Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Left _ to Left Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Top _ to Top Of =" parent " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Bottom _ to Bottom Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Left _ to Left Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Top _ to Top Of =" parent "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Happy ĠNew ĠYear !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text 3 " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Happy ĠNew ĠYear !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ id / my _ id 0 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ LinearLayout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ android . support . constraint . Constraint Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : ĠThe Ġid Ġ" text 2 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġone Ġof Ġ{ text 1 , Ġtext 3 } Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : Ġmy _ id 0 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠConstraint Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : Ġtext 3 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠConstraint Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Constraint Referenced Ids Missing Values File () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠValidate Ġid Ġlists Ġin Ġ< Barrier > Ġelements ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / layout 3 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . constraint . Constraint Layout ĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< android . support . constraint . Barrier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / barrier " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : barrier Direction =" end " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Hello ĠWorld !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Bottom _ to Bottom Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Left _ to Left Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Top _ to Top Of =" parent " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Happy ĠNew ĠYear !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ id / my _ id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Bottom _ to Bottom Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Left _ to Left Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Top _ to Top Of =" parent " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Bottom _ to Bottom Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Left _ to Left Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Right _ to Right Of =" parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : layout _ constraint Top _ to Top Of =" parent "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Happy ĠNew ĠYear !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text 3 " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< TextView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Happy ĠNew ĠYear !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ id / my _ id 0 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ LinearLayout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ android . support . constraint . Constraint Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : ĠThe Ġid Ġ" my _ id 0 " Ġis Ġnot Ġdefined Ġanywhere . Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : ĠThe Ġid Ġ" my _ id 1 " Ġis Ġnot Ġdefined Ġanywhere . Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : ĠThe Ġid Ġ" text 2 " Ġis Ġnot Ġdefined Ġanywhere . ĠDid Ġyou Ġmean Ġone Ġof Ġ{ text 1 , Ġtext 3 } Ġ? Ġ[ Unknown Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / layout / layout 3 . xml : 1 3 : ĠError : Ġtext 3 Ġis Ġnot Ġa Ġsibling Ġin Ġthe Ġsame ĠConstraint Layout Ġ[ Not Sibling ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp : constraint _ referenced _ ids =" text 1 , text 2 , text 3 , my _ id 0 , my _ id 1 " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Includes () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / layout 4 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Hello ĠWorld !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Bottom ="@ + id / id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Left ="@ + id / id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< include Ġlayout ="@ layout / included 1 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< include Ġlayout ="@ layout / included 2 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / included 1 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< LinearLayout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / included 2 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< merge ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / my _ merge " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Hello ĠWorld !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ merge > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. incremental (" res / layout / layout 4 . xml "). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Unknown Includes () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / layout / layout 4 . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : app =" http :// schemas . android . com / apk / res - auto " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Hello ĠWorld !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / text 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Bottom ="@ + id / id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Left ="@ + id / id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< include Ġlayout ="@ layout / included 1 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< include Ġlayout ="@ layout / included 2 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSample Ġcode ĊĠĠĠ Ġprivate Ġval Ġm Ids Ġ= Ġxml ( ĊĠĠĠĠĠĠĠ Ġ" res / values / ids . xml ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< resources > ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< item Ġname =" my _ id 0 " Ġtype =" id "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< item Ġname =" my _ id 1 " Ġtype =" id "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ resources > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ). indent ed () ĊĊĠĠĠ Ġ// ĠSample Ġcode ĊĠĠĠ Ġprivate Ġval Ġm Ignore layout 1 Ġ= Ġxml ( ĊĠĠĠĠĠĠĠ Ġ" res / layout / layout 1 . xml ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxmlns : tools =" http :// schemas . android . com / tools " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / Relative Layout 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" fill _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" fill _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : orientation =" vertical " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- Ġmy _ id 1 Ġis Ġdefined Ġin Ġids . xml , Ġmy _ id 2 Ġis Ġdefined Ġin Ġmain 2 , Ġmy _ id 3 Ġdoes Ġnot Ġexist Ġ--> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Bottom ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Left ="@ + id / my _ id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Top =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Right ="@ + id / my _ id 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ id / my _ id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtools : ignore =" Unknown Id In Layout , Unknown Id , Not Sibling " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ). indent ed () ĊĊĠĠĠ Ġ// ĠSample Ġcode ĊĠĠĠ Ġprivate Ġval Ġm Layout 1 Ġ= Ġxml ( ĊĠĠĠĠĠĠĠ Ġ" res / layout / layout 1 . xml ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĊĠĠĠĠĠĠĠ Ġ< Relative Layout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / Relative Layout 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" fill _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" fill _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : orientation =" vertical " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- Ġmy _ id 1 Ġis Ġdefined Ġin Ġids . xml , Ġmy _ id 2 Ġis Ġdefined Ġin Ġmain 2 , Ġmy _ id 3 Ġdoes Ġnot Ġexist Ġ--> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Bottom ="@ + id / button 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Left ="@ + id / my _ id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Top =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Right ="@ + id / my _ id 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Top ="@ id / my _ id 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / button 4 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ align Parent Left =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ below ="@ + id / button 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠ Ġ</ Relative Layout > ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ). indent ed () ĊĊĠĠĠ Ġ// ĠSample Ġcode ĊĠĠĠ Ġprivate Ġval Ġm Layout 2 Ġ= Ġxml ( ĊĠĠĠĠĠĠĠ Ġ" res / layout / layout 2 . xml ", ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ< LinearLayout Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" match _ parent " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : orientation =" vertical " Ġ> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Button ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : id ="@ + id / my _ id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ width =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : layout _ height =" wrap _ content " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : text =" Button " Ġ/> ĊĊĠĠĠĠĠĠĠ Ġ</ LinearLayout > ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ). indent ed () Ċ } Ċ