2012-02-15 3 views
1

레이아웃에서 include을 사용할 때 폭과 높이를 모두 include 태그와 레이아웃에 연결해야합니다. 그렇지 않으면 제대로 작동하지 않습니다. 그래서 그것은 include이 자체 너비, 높이, id 등을 가지고 있다면 링크가 아니라 View의 서브 클래스 인 것 같습니다. 그러나 developer's site에는 include과 같은 클래스가 없습니다. 너 누구야, include?View 하위 클래스에는 어떤 것이 있습니까?

답변

3

<include> 태그는 내부 레이아웃의 복사/붙여 넣기로 간주 할 수 있습니다. 보기 Inflater 클래스에있는 xml 구문 분석의 일부입니다. 효과적으로 레이아웃 ID를 가져 와서 전달한 xml 객체를 부 풀린 다음 포함 된 레이아웃의 속성을 기반으로 팽창하는 주 레이아웃에 추가합니다. View에서 상속 한 모든 항목에 사용할 수 있습니다.

layout_이 들어있는 특성을 덮어 쓸 수 있습니다. 이 없으면 width 및 height 속성이 포함 된 레이아웃의 루트에 포함되는 경우 덮어 씁니다. 그러나 은 다른 속성을 덮어 쓰는 경우 해당 매개 변수를 덮어 써야합니다. <include>이 어떻게 파싱되는지에 대한 버그의 일부입니다. 예를 들어 layout_marginLeft을 변경하려면 파서가 왼쪽 여백 속성을 덮어 쓸 수 있도록 레이아웃에있는 값과 동일한 값으로 layout_widthlayout_height을 덮어 써야합니다.

+0

"그러나 다른 속성을 덮어 쓰는 경우에는이 매개 변수를 덮어 써야합니다."예, 이제 알 수 있습니다. 그게 문제 였어. 나는 그들을 배치하고 따라서 모든 레이아웃 매개 변수를 "취소"하려고 시도했다. – Gangnus

+0

그래서 모든 include의 include common에서 일부 parametres를 만들고 싶다면 내부 레이아웃에 루트 레이아웃을 추가해야합니까? – Gangnus

+0

@Gangnus ** 포함 ** 레이아웃, 예 (희망은 "내부"가 의미하는 바입니다.) – Felix

1

include 포함 된 레이아웃의 루트 요소의 너비와 높이를 지정하는 경우 실제로 너비와 높이가 필요하지 않습니다. 즉,이 완전히 유효합니다

<include layout="@layout/my_included_layout" /> 

너무 오래 my_included_layout 그것이 행복 할 것이다 폭과 높이의 루트 요소를 가지고있다.

+0

죄송합니다. 한 시간 전에 다른 회사의 동료와 만났습니다. 독립적으로 우리는 *와 * 참조 된 레이아웃의 너비와 높이를 포함시키지 않으면 include의 배치가 작동하지 않는다는 사실에 이르렀다. 그의 레이아웃도 내 레이아웃도 마찬가지입니다. 내 인생에서 처음으로이 남자를 보았고 독립적 인 테스터가 긍정적으로 점검 한 생각을 신뢰합니다. – Gangnus

+0

충분합니다. 나는 현재 39 개의 프로젝트 만 홀로 열어 놓았으며 그 중 하나에 폭이나 높이를 지정하지 않았습니다. 내 것이 적절하게 배치되고 있음을 확신 할 수 있습니다. 네가 뭘하고 있는지 모르지만 예제를 게시 할까? –

+0

다른 답변으로 DeeV가 원인을 설명했습니다. 그것은 버그입니다 :-(하지만 감사합니다. 그리고 +1, 예를 들어 맞습니다. – Gangnus

관련 문제