Android 레이아웃 파일의 "tools : context"는 무엇입니까?


936

최신 버전의 ADT부터는 레이아웃 XML 파일에서 다음과 같은 새로운 속성을 발견했습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity" />

"tools : context"는 무엇에 사용됩니까?

거기에 기록 된 활동의 정확한 경로를 어떻게 알 수 있습니까? 매니페스트 내부의 앱 패키지를 봅니까?

컨텍스트를 확장하거나 활동 만 확장하는 클래스로 제한됩니까? ListView 항목 등에 사용할 수 있습니까?


예, 항상 최신 adt & sdk 버전 (현재 adt & sdk 20 미리보기 3 사용)을 설치하기 때문에 내가 놓친 것이 무엇인지 궁금합니다 ( "새로운 기능"섹션에서 보지 않고).
안드로이드 개발자

9
또한 < tools.android.com/tech-docs/tools-attributes#TOC-tools:context > 에서 공식 문서를 살펴보십시오 .
MDTech.us_MAN

2
내 앱은 여전히 ​​컨텍스트없이 작동합니다.
가장 존경받는 선생님

1
@ user132522 IDE 자체에서 개발에 관한 모든 것입니다. 앱을 실행할 때가 아닙니다
Android 개발자

답변:


440

이것은 UI 편집기가 레이아웃 미리보기를 렌더링하는 데 사용하는 활동입니다. 여기에 문서화되어 있습니다 .

이 속성은이 레이아웃이 기본적으로 어떤 활동과 연관되어 있는지 선언합니다. 이를 통해 편집기 또는 레이아웃 미리보기에서 미리보기에 레이아웃 테마가 있어야하는 항목 및 빠른 수정 사항에서이를 작성할 때 onClick 핸들러를 삽입하는 위치와 같은 활동에 대한 지식이 필요한 기능을 사용할 수 있습니다.


내가 참조 . 여기에 스크린 샷에 따르면 : tools.android.com/_/rsrc/1337185954574/recent/newconfigchooser/… , 그것은 컨텍스트를 확장하는 클래스 일 필요는 없다는 것을 의미합니까? 그렇다면, 나는 당신이 무엇을 말하는지 더 잘한다고 생각합니다.
안드로이드 개발자

2
Activity확장 Context그렇게하지 당신이 무슨 뜻인지? 관심이 있다면 소스 코드를 확인하십시오. 나는 세부 사항을 모른다.
Nikolay Elenkov

죄송합니다. 스크린 샷의 텍스트를 올바르게 읽지 못했습니다. 내가 보여준 것을 가리키면 조각 일 수도 있지만 조각에는 테마가 어디에도 없습니다. 어쨌든, 나는 여전히이 새로운 속성이 무엇인지 확신하지 못한다. 새로운 Google iOS가 이에 대해 알려 줄지 궁금합니다.
안드로이드 개발자

25
그들은이 기능을 보여주는 새로운 비디오를 만들었습니다 : youtube.com/…
안드로이드 개발자


380

이 속성은 기본적으로 레이아웃 위의 "관련 활동"선택에 대한 지속성입니다. 런타임시 레이아웃은 항상 활동과 연관됩니다. 물론 둘 이상, 그러나 적어도 하나와 연관 될 수 있습니다. 도구에서 특정 기능을 구동하기 위해이 맵핑에 대해 알아야합니다 (런타임에서 다른 방향으로 발생합니다. 활동은 setContentView (layout)을 호출하여 레이아웃을 표시 할 수 있음).

현재 우리는 한 가지 용도로만 사용하고 있습니다 : 레이아웃에 표시 할 올바른 테마 선택 (매니페스트 파일은 활동 에 사용할 테마를 등록 할 수 있기 때문에 레이아웃 과 관련된 활동을 알고 나면 레이아웃에 표시 할 올바른 테마). 앞으로는이 기능을 사용하여 작업 표시 줄 (활동과 관련된) 렌더링, onClick 처리기 추가 장소 등과 같은 추가 기능을 구동 할 것입니다.

이것이 도구 인 이유 : 네임 스페이스 속성은 도구에서 사용하기위한 디자인 타임 매핑이기 때문입니다. 레이아웃 자체는 여러 활동 / 조각 등에서 사용할 수 있습니다. 우리는 예를 들어 올바른 테마를 표시 할 수 있도록 디자인 타임 바인딩을 선택할 수있는 방법을 제공하려고합니다. 리스트 뷰와 프래그먼트 바인딩 등을 변경할 수있는 것처럼 언제든지 변경할 수 있습니다.

(여기에 대한 자세한 내용 있는 전체 변경 세트가 있습니다 )

네, 위에 나열된 Nikolay 링크 는 새로운 구성 선택기의 모양과 작동 방식을 보여줍니다

한가지 더 : "도구"네임 스페이스는 특별합니다. 안드로이드 패키징 도구는 그것을 무시한다는 것을 알고 있으므로, 그러한 속성은 APK에 패키징되지 않습니다. 레이아웃에서 추가 메타 데이터로 사용하고 있습니다. 예를 들어 보푸라기 경고를 억제하는 속성이 도구 : 무시로 저장되는 위치도 있습니다.


기본 패키지가없는 경우 활동의 전체 경로를 어떻게 알 수 있습니까? 매니페스트 파일을 보나요?
안드로이드 개발자

2
예, 매니페스트 파일의 액티비티 등록과 동일한 방식으로 처리하며 name 속성에서 패키지를 생략 할 수도 있습니다. 필요한 경우 매니페스트 파일 루트 요소에서 패키지 선언을 추가합니다.
Tor Norbye

좋아. 이 모든 (및 그 이상)이 google io 2012에 표시됩니까? 새로운 기능에 대한 이야기를 기다릴 수 없습니다. :)
안드로이드 개발자

1
새 프로젝트에 대해 생성 된 XML tools:context에서 TextView필드에 값을 넣습니다 . 이것이 전체 레이아웃에 테마를 적용하는 전역 사용 사례처럼 들리므로 왜 루트 레이아웃에 배치되지 않습니까?
Jason Robinson

3
현재 도구 속성을 설명하는 문서를 추가했습니다 : tools.android.com/tech-docs/tools-attributes
Tor

92

Android 도구 프로젝트 사이트 에 따르면 :

도구 : 문맥

이 속성은 일반적으로 레이아웃 XML 파일의 루트 요소에 설정되며 레이아웃과 연관된 활동을 기록합니다 (디자인 타임에는 레이아웃이 둘 이상의 레이아웃에서 사용될 수 있기 때문에). 테마는 매니페스트에서 정의되고 레이아웃이 아닌 액티비티와 연관되어 있기 때문에 예를 들어 레이아웃 편집기에서 기본 테마를 추측하는 데 사용됩니다. 매니페스트에서와 동일한 점 접두사를 사용하여 전체 응용 프로그램 패키지 이름없이 활동 클래스를 접두사로 지정할 수 있습니다.

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">  

사용 : Lint의 Studio & Eclipse 레이아웃 편집기


14

1. 설명

tools: context = "activity name"현재 레이아웃 파일 세트의 해당 렌더링 컨텍스트에서 apk.Only ADTLayout Editor 로 패키지되지 않습니다. 컨텍스트에서 렌더링에 현재 레이아웃을 표시하십시오. 활동 이름은 활동에 해당 manifest합니다. ADT레이아웃 편집기는 MainActivity테마 에 따라 현재 레이아웃을 렌더링합니다 . 세트를 설정하면 테마를 설정합니다. 빛 (다른 것), 당신은 시각적 레이아웃 관리자 o 테마가 무엇인지의 배경 제어에서 볼 수 있습니다. 빛은 다음과 같이 보입니다. 보이는 것만이 결과를 얻는 것입니다.

어떤 사람들은 어떤 사람들은 이해할 것이며 어떤 사람들은 또한 모르는 것을 볼 것입니다.

2. 샘플

tools:text예를 들어, 더 많은 이미지를 이해하는 데 편리한 간단한 이미지를 가져옵니다 .tools:context

<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="sample name1" />

<TextView
    android:id="@+id/text2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="sample name2" />

여기에 이미지 설명을 입력하십시오

TextView1을 채택 android: text하고를 사용 tools:textTextView표시 할 레이아웃 편집기의 오른쪽에, 2 sample name1sample name2생성 컴파일하는 코드를 실행 한 후 경우, 두 개의 글꼴 apk만, 터미널 표시 sample name1는 표시되지 않습니다 sample name2말을. 당신은 실행을 시도 할 수 있습니다, 효과를 참조하십시오.

3. 구체적인 설명

1. tools: context = "activity name"그것은 패키지로 포장되지 않을 것입니다 apk(이해하는 내용은 주석 처리되고 아무런 효과가 없습니다).

2.Only ADT레이아웃 편집기 (즉, 시뮬레이터의 오른쪽 위의 아이콘) 렌더링 컨텍스트를 대응하는 현재의 레이아웃 파일 세트, 콘텍스트 렌더링에서 현재 XML의 레이아웃 경우 액티비티 활동 이름 해당합니다 매니페스트 파일의 활동이 테마를 설정하면 ADT레이아웃 편집기는 테마 에 따라 현재 레이아웃을 렌더링합니다 MainActivity. Light는 (other) 일 수도 있습니다. (이해할 수 있습니다 : tools: context = "activity name"XML 레이아웃이 지정된 활동을 렌더링하고, 매니페스트 파일에서 테마를 설정합니다. 오른쪽 시뮬레이터 위에 표시된 테마 스타일은 테마에 해당하는 변경 사항을 따릅니다.)

4. 요약

요약하면 이러한 속성은 주로 올바른 도구, 시뮬레이터 디버깅 시간 표시 상태 및 컴파일이 작동하지 않습니다.


7

"tools : context"는 개발 프레임 워크에서 XML로 레이아웃을 쉽게 만들 수있는 디자인 속성 중 하나입니다. 이 속성은 레이아웃 구현을 위해 어떤 활동 클래스가 선택되는지 개발 프레임 워크를 표시하는 데 사용됩니다. “tools : context”를 사용하여 Android Studio는 미리보기에 필요한 테마를 자동으로 선택합니다.

Android 앱 개발을위한 다른 속성 및 유용한 도구에 대한 자세한 내용을 보려면 다음 검토를 살펴보십시오. http://cases.azoft.com/4-must-know-tools-for-effective-android -개발/


3

이것이 가장 좋은 해결책입니다 : https://developer.android.com/studio/write/tool-attributes

이것은 우리가 xml에서 액티비티 컨텍스트를 설정할 수있는 디자인 속성입니다.

tools:context=".activity.ActivityName"

어댑터:

tools:context="com.PackegaName.AdapterName"

여기에 이미지 설명을 입력하십시오

표시된 아이콘을 클릭하면 Java 클래스로 이동할 수 있으며 도구에는 더 많은 기능이 있습니다.

tools:text=""
tools:visibility:""
tools:listItems=""//for recycler view 

etx


0

tools:context=".MainActivity" thisline은 xml 파일에서 사용되며이 xml 파일에 액세스하는 데 사용되는 Java 소스 파일을 나타냅니다. 이것은 perticular Java 파일에 대한이 xml 미리보기를 표시 함을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.