2011-12-17 6 views
1

relativeLayout을 가지고 theme.dialog android 테마를 사용하고 싶습니다. 설정 폭은 240dip이어야합니다. 전체 레이아웃을 지정하고 XML로 된 자식 인 경우이 방법이 유용합니다. 그러나 XML을 확장하여 더 많은보기 (아래 코드)를 추가하려고하면 Layout이 화면 너비를 채 웁니다.RelativeLayout은 부풀려 질 때 너비를 설정하지 않습니다.

Context context = this; 
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    RelativeLayout header = (RelativeLayout) inflater.inflate(R.layout.headphonepopupheader, null); 

headphonepopup.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="240dp" 
android:layout_height="wrap_content" > 

<ImageButton 
    android:id="@+id/closebutton" 
    android:layout_width="24dp" 
    android:layout_height="24dp" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_marginLeft="216dp" 
    android:background="@drawable/closebutton" /> 

</RelativeLayout> 

는이 문제를 해결하는 방법이 있나요?

답변

3

RelativeLayout을 부 풀릴 때는 inflate() 메서드 서명을 사용하지 마십시오. 대신 부모 컨테이너를 두 번째 매개 변수로 사용하고 부울을 세 번째 매개 변수로 사용하는 inflate()을 사용하십시오. 두 번째 매개 변수에 RelativeLayout의 최종 부모를 제공하고 RelativeLayout을 즉시 추가하지 않으려면 false을 세 번째 매개 변수로 전달하십시오.

RelativeLayoutListView에있는 행의 기초로 사용할 때이 방법은 모든 종류의 인플레이션 문제를 해결합니다.

+0

상대방을 ViewGroup의 루트로 지정하고 싶습니다. 이것이 가능한가? – Frazerm63

+0

@ Frazerm63 : 당신이 만드는 모든 것은 다른 것의 안에 들어갑니다. 'setContentView()'를 호출하더라도,'View'는'Activity'에 의해 제공된 다른 컨테이너 안에 들어갑니다. 따라서이 'RelativeLayout'을 컨텐트 뷰로 설정하려면'setContentView()'를 호출하고 Android에서 레이아웃을 확장하십시오. – CommonsWare

관련 문제