2011-12-21 5 views
21

문제가 있습니다. 나는 안드로이드 응용 프로그램을 개발합니다.어떻게 포함 된 XML 레이아웃을 Java 코드의 다른 레이아웃으로 변경할 수 있습니까?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="300dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="clip_horizontal" 
    android:layout_alignParentLeft="true" 
    android:id="@+id/rlMenu" 
    > 

    <Button 
     android:id="@+id/bMusteriler" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Musteriler" 
     android:textSize="45dp" 
     android:layout_alignParentLeft="true" 
     /> 

</RelativeLayout> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_toRightOf="@id/rlEkranlar" 
    > 

    <include 
     android:id="@+id/include1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     layout="@layout/ikinci" /> 

</RelativeLayout> 
</RelativeLayout> 

문제점 (자바 코드) 버튼을 클릭 할 때 포함 레이아웃을 변경하는 방법이다

은이 같은 제 레이아웃 제 레이아웃을 포함?

영어로 죄송합니다. 감사합니다. .

+0

새로운 XML 파일과 작업을 만들 의도을 통해 두 번째 전화 처음에 첫번째 레이아웃이 출력됩니다. –

+0

질문을 수정하십시오. 명확하지 않습니다. –

+0

@YugandharBabu 내가 = 레이아웃에 레이아웃 = "@ 레이아웃/ikinci"를 변경하려면 "@ 레이아웃/third_layout"버튼을 클릭하면. – UurYsr

답변

51

include 문에 RelativeLayout을 입력하십시오. 다음과 같이 시도하십시오 :

<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/vf" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <include android:id="@+id/include1" layout="@layout/ikinci" /> 
    <include android:id="@+id/map" layout="@layout/third_layout" /> 

</ViewFlipper> 

다음과 같이 ViewFlipper에 액세스하십시오.

ViewFlipper vf = (ViewFlipper)findViewById(R.id.vf); 

버튼의 OnClickListener를 들어 :

button.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       vf.setDisplayedChild(1); 
      } 
     }); 
+0

고마워요. 문제를 해결했습니다 =)) – UurYsr

+0

답을 얻었 으면 표시하십시오. 너는 환영받는 친구 야. –

+0

내가 다시 한 것 같아. 고마워. – UurYsr

0

다른 XML을 포함시킨 XML의 현재보기 인스턴스를 가져 오려고 시도 했습니까? findViewById()을 사용하십시오. 보기 V는 처음 레이아웃과이보기에 당신은 .findViewById()

+0

나는 이것을 시도 : 레이아웃 L1 = (Layout) findViewById (R.id.layout1); 변환 오류가 있습니다. 보기를 레이아웃으로 변환 할 수 없습니다. 잘못된 일을하고 있습니까? – UurYsr

+0

레이아웃? 자신 만의 뷰를 만드는 한 SDK에는 그러한 뷰가 없습니다. 클래스 이름을 제대로 참조했는지 확인하십시오. Like : LinearLayout, RelativeLayout, FrameLayout .... –

+0

나는 이것을 이해할 것이다. 감사합니다 – UurYsr

20

코드 레이아웃을 변경하는 두 가지 방법이 사용

A. 변경 가시성을.

<include 
    android:id="@+id/id1" 
    android:visibility="visible"/> 
<include 
    android:id="@+id/id2" 
    android:visibility="gone"/> 

및 코드 사용이 :

findViewById(R.id.id1).setVisibility(View.GONE); 
findViewById(R.id.id2).setVisibility(View.VISIBLE); 

B. 수동으로 아이를 추가하여 XML에 견인 다른 레이아웃을 포함합니다. 당신이 아이를 추가하거나 삭제할 수 있습니다 당신이 지금 사용과 같은 XML을 사용하여 코드에 추가

yourRelativeLayout.removeAllViews(); 
yourRelativeLayout.addView(viewToInclude); 

논외을 :

당신은 RelativeLayout의에서 xmlns:android PARAM를 작성할 필요가 없습니다. 레이아웃 파일에서 가장 많은 태그를위한 것입니다.

+0

고마워요 @ Jin35, 나는 당신의 해결책을 시험해 보았습니다. – UurYsr

+3

Intellij 14는 자동 완성 옵션에서 "가시성"을 제공하지 않기 때문에 혼란 스러웠습니다. –