2013-03-08 6 views
0

나는 여기서 너트하려고합니다. 조각을위한 레이아웃이 있습니다. 안에는 id가있는 LinearLayout이 있는데, 예를 들어 myLinearLayout입니다. 기본적으로 다음과 같이하고 싶습니다.R.layout이 아닌 R.id에서 선형 레이아웃을 확대하십시오.

LinearLayout newLayout = new LinearLayout(this); 
LinearLayout layoutCopy = inflatefrom(R.id.myLinearLayout); 
newLayout.addView(layoutCopy); 

어떻게하면됩니까?

답변

1

당신은 R.id에서 Layout 팽창 할 수는 없지만 R.layout 통해 Layout을 팽창하고보기를 사용 당신이 필요로하는 R.id를 검색하기 위해 반환 할 수 있습니다. 오타

0

사실 blackbelt에 대한

LayoutInflater inflater = LayoutInflater.from(this); 
View view = inflater.inflate(R.layout.mylayout, null); 
LinearLayout layoutCopy = (LinearLayout)view.findViewById(R.id.myLinearLayout); 

체크 예를 들어

, 그건 내가 그것을 해결하지만, 새로운 레이아웃에 복사 레이아웃을 추가 할 때 난 여전히 오류가 있었는지 꽤 많이 있습니다. 이유는 내가 복사하고 싶었던 레이아웃에 여전히 부모가 있었기 때문입니다. 다음은 완전한 해결책입니다 (layoutRoot는 res/layout에있는 xml 레이아웃이고 myLinearLayout은 layoutRoot 파일의 LinearLayout입니다.) layoutToPlaceCopiedLayout은 복사 된 레이아웃을 넣을 레이아웃의 LinearLayout입니다.

LinearLayout newLayout = (LinearLayout)findViewById(R.id.layoutToPlaceCopiedLayout) 
LayoutInflater inflater = LayoutInflater.from(this); 
LinearLayout layoutRootCopy = (LinearLayout)inflatefrom(R.layout.layoutRoot); 
LinearLayout layoutCopy = (LinearLayout)layoutRootCopy.findViewById(R.id.myLinearLayout); 
ViewGroup parent = (ViewGroup)layoutCopy.getParent(); 
int index = parent.indexOfChild(layoutCopy); 
parent.removeView(layoutCopy); 
newLayout.addView(layoutCopy, index); 
1

보십시오이 하나

View.inflate(Context, R.id, ViewGroup)