2013-03-14 2 views
1

다른 레이아웃의 일부로 사용하려는 레이아웃 파일이 있다고 가정 해 봅시다. 어떻게해야합니까?여러 xml 파일을 하나의 최종 Android 레이아웃으로 결합

예를 들어 /res/layout/table.xml에 테이블 레이아웃이 있습니다. /res/layout/relative_stuff.xml의 상대 레이아웃 내부에서 해당 테이블을 구성 요소로 사용하려고합니다. 내 상대 레이아웃이 테이블과 두 개의 버튼을 포함한다고 가정 해보십시오.

단순한 경우는 relative_stuff.xml 파일 안에 완전히 결합하는 것입니다. 그러나 더 좋은 경우는 테이블 xml을 프로그래밍 방식으로 설정할 수있는 능력입니다. 현실은 많은 다른 테이블 중에서 선택하고 싶습니다. 이제는 /res/layout/table_1.xml/res/layout/table_2.xml의 두 테이블을 선택해야합니다.

기본적으로 내 기본 레이아웃 파일은 /res/layout/relative_stuff.xml입니다. 그리고 프로그래밍 방식으로 두 개의 테이블 중 하나를 설정하려고합니다.

답변

5

당신은 re-use layouts using an include tag입니다. 당신이 XML에서 그것을하지 않으려면

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width=”match_parent” 
    android:layout_height=”match_parent”> 

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

</LinearLayout> 

, 당신은 당신의 XML을 팽창하는 LayoutInflater를 사용하고 어떤 컨테이너에 추가 할 수 있습니다 : 귀하의 예제 레이아웃/table.xml를 사용하여 예를 들어

, 당신이 사용하고 있습니다.

LayoutInflater mLayoutInflater = (LayoutInflater) context.getSystemService(LAYOUT_INFLATER_SERVICE); 
View tableLayout = mLayoutInflater.inflate(R.layout.table, (ViewGroup) findViewById(R.layout.root_id)); 
rootLayout.addView(tableLayout); 
+0

감사합니다. 코드에 추가하고 몇 분 안에 작동하는지 알려 드리겠습니다. – learner

+0

활동의 ['addContentView()'] (https://developer.android.com/reference/android/app/Activity.html#addContentView%28android.view.View,%20android.view.ViewGroup.LayoutParams % 29)를 입력하십시오. (+1, 비록 첫 문장이 옳지 않다하더라도 ...) – Sam

+0

@Tanis는 Grid Layout에 Include Method를 사용할 수 있습니다. 가능한 경우 Adapter를 사용하여 GridLayout 값을 설정하는 방법은 무엇입니까? – shanavascet

0

레이아웃 Inflator Service를 사용하여 여러 개의 add 활동을 추가 할 수 있습니다.

관련 문제