마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레이아웃 include 관련 문의

0 추천
레이아웃을 include하면 해당 xml파일 전체를 가져오는게 맞나요 ?

 

그런데 제가 레이아웃 xml파일 안에 특정 레이아웃만 include하고싶은데

 

어떻게해야하는지 도움좀 부탁드립니다.

 

예를들어

 

<LinearLayout

          ..... >

     <LinearLayout  

            <LinearLayout

               android:id="@+id/linearlayout"   

                 .../>

           .... />

</LinearLayout>

 

일때 id linearlayout 저 레이아웃 영역만 인클루드할수있습니까 ?

 

인클루드가 안된다면 다른 방법이 있다면 알려주세요 ㅠㅠ
음무 (17,820 포인트) 님이 2014년 1월 15일 질문

1개의 답변

+1 추천
 
채택된 답변
제가 알기로는  layout에있는 xml안에서 특정 id에 해당하는 부분만 inflate 시키는 방법은 없을듯 싶구요

대체할 수 있는 방법으로는 따로 inflate 하고 싶은 부분만 빼서 xml 파일로 만들고

(이렇게 하면 해당 레이아웃만 inflate 시킬 수 있겠죠?)

 

해당 부분이 기존 xml layout 에 포함되어야 한다면 <include /> 태그를 이용해서 추가하시면 됩니다.
Gradler (109,780 포인트) 님이 2014년 1월 15일 답변
음무님이 2014년 1월 15일 채택됨
해당하는부분만 따로 xml로 만든다면
기존 xml에서 아이디가 다 있고 소스코드는 그 아이디를 반영하는데

새로만든 xml은 아이디를 어떻게하나요 ? 그럼 두번작업하게되는결과가
나타나지 않을까요?

조언부탁드립니다.
a.xml 에서 사용하던 abc라는 아이디를 가진 레이아웃을 b.xml로 옴기고

a.xml에 b.xml을 include시킨후 소스상에서 a.xml을 불러와서 작업을 하는경우

그대로 아이디 abc로 사용하면 됩니다.
감사합니다. 알려주신데로 한번 해봐야겠습니다.
한가지만 더 여쭤봐도 될까요??
인클루드 한 레이아웃 영역을 터치했을때 리스너를 통해 이벤트를 주고싶은데

인클루드한 레이아웃을 어떻게 해야 리스너를등록할수있나요?
인클루드가 되는 부분의 상위 레이아웃에서 findviewbyid 메소드를 이용하여 내부에 인클루드 되는 레이아웃들에 접근이 가능합니다.

간단하게 상위 레이아웃의 객체를 받아서
레이아웃객체.findviewbyid(R.id.원하는뷰) 형태로 호출해서 객체를 받아올수있습니다.
인클루드한 레이아웃이 예를 들어 LinearLayout 이라고 한다면
Linearlayout layout = getLayoutInflater().inflate(xxxxxx, xxx);
layout.setOnClickListener(listener)
이런식으로 하시면 되요
...