[android] xml 의 tool 을 사용하자 |
https://medium.com/sebs-top-tips/tools-of-the-trade-part-1-f3c1c73de898
https://developer.android.com/studio/write/tool-attributes.html
-
xmlns:tools="http://schemas.android.com/tools"
aapt 는 tools: attribute 를 ignore 한다.
그래서 실제 apk 에는 들어가지 않는다.
-
<TextView
...
tools:text=“I am a title”/>
위와 같이 tools: 를 사용하면 실제 xml 에서 pre draw 할 때는 tools:text 가 android:text 처럼 작동하지만,
apk 는 들어가지 않는다. aapt( android asset packaging tool ) 가 무시하므로
-
tools attribute 는 2개의 category 로 나눠질 수 있다.
첫 카테고리는 Lint analysis 에 영향을 미치고,
두번째 카테고리는 UI 표시에 영향을 미친다.
-
Lint attribute 는 tools:ignore / tools:targetApi / tools:locale 이 있다.
-
tools:ignore 는 Java 의 @SuppressWarning annotation 과 같은 역할이다.
<ImageView
...
tools:ignore=“contentDescription” />
-
tools:targetApi 는 Java 의 @TargetApi annotation 과 같은 역할이다.
<ripple
...
tools:targetApi=“LOLLIPOP” />
-
tools:locale 은 어떤 locale 을 target 으로 resource 를 mapping 할지 정한다.
아래와 같이 values/strings.xml 에 들어가는 내용물이 영어가 아닌 경우..
즉 app 을 영문이 아닌 버전으로 작성할 경우 locale 을 명시해주면 proofreading 을 하지 않아서 spell checking 에러를 내뿜지 않는다.
<resources
tools:locale=“kr”>
...
</resources>
-
UI attribute 는 xml preview 에 영향을 미치는 것이다.
-
tools:context 는 view 를 inflate 할 때 사용할 activity 를 지정할 수 있다.
이 녀석을 지정해서 가장 큰 수혜는 바로 해당 activity 에 적용된 theme 을 확인할 수 있다는 것!!
onCreateOptionsMenu 가 정의되어 있다면, 이 함수를 보고 Menu 도 보여준다.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
...
tools:context="com.android.example.MainActivity">
-
tools:menu 는 preview pane 에서 menu 항목을 미리 보여주는 것이다.
layout 의 root node 에 적용해야 한다.
기본적으로 context 가 선택되어 있다면, 해당 activity 의 onCreateOptionsMenu 함수를 보고 메뉴를 적용한다.
onCreateOptionsMenu 를 override 하는 목적으로 사용되는 녀석이 이 menu attribute 이다.
tools:menu="menu_main, menu_edit”
위와 같이 하면 onCreateOptionsMenu 안의 코드를 무시하고, 2개의 메뉴가 표시된다.
단!! 이 녀석은 Theme.AppCompat 을 사용할 경우에는 지원되지 않는다.
-
tools:actionBarNavMode 는 standard, tabs, list.
이 녀석도 Theme.AppCompat 과 Material Theme 에는 작동하지 않는다.
-
AbsListVIew 를 사용하는 경우 listitem, listheader, listfooter 등을 명시할 수 있다.
<ListView
...
tools:listheader="@layout/list_header"
tools:listitem="@layout/list_item"
tools:listfooter="@layout/list_footer" />
GridView 는 header, footer 가 작동하지 않는다.
-
tools:layout attribute 는 fragment tag 에 layout 을 표시하는 효과를 준다.
( onCreateView 에서 inflate 하는 녀석을 연결해주면 된다. )
-
tools:showIn attribute 는 다른 xml 에서 include 되었을 때 view 를 그리는 데 사용된다.
이 녀석은 merge 가 root 로 사용될 때 유용하다.
<merge
...
tools:showIn="@layout/activity_main">
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] sign key hash key (sha) print out (0) | 2017.06.07 |
---|---|
[android] VectorDrawable 에 대한 이야기 (0) | 2017.06.02 |
[android] LOS visibility change & ripple animation glitch (잔상문제) (0) | 2017.05.29 |
[Java] GC 에 대한 이야기 (0) | 2017.05.25 |
[android] CircularRevealEffect Basic Simple Example (0) | 2017.05.24 |
댓글