2011-04-26 4 views
4

리소스 템플릿에서 생성하고자하는 사용자 정의 뷰가 있습니다. 내 사용자 지정보기 생성자는 사용자 지정보기에 대한 추가 정보로 설정된 추가 매개 변수를 허용합니다.안드로이드는 기존 뷰 객체를 사용하여 뷰를 펼칩니다.

문제는 inflate 메서드가 정적이고 내 사용자 지정보기 대신 인스턴스가 아닌 새 뷰를 반환하기 때문에 뷰를 부 풀릴 때 사용자 정의 뷰에서 서브 클래 싱되지 않은 뷰 객체를 가져 오는 것입니다.

내가 찾고있는 방법은 내 사용자 지정보기 개체 참조를 전달하여보기를 부 풀릴 수 있습니다.

 
public class MLBalloonOverlayView extends View { 
    MiscInfo mMiscInfo; 
    public MLBalloonOverlayView(Context context, MiscInfo miscInfo) { 
     super(context); 
     mMiscInfo = miscInfo; 
    } 
    public View create(final int resource, final OverlayItem item, 
         MapView mapView, final int markerID) { 
     ViewGroup viewGroup = null; 
     View balloon = View.inflate(getContext(), resource, viewGroup); 

     // I want to return this object so later I can use its mMiscInfo 
     //return this; 
     return balloon; 
    } 
} 

답변

1

https://github.com/galex/android-mapviewballoons 에서 코드를보고 난 후에 나는 그에 따라 내 코드를 업데이트 할 수 있었다. 아이디어는 당신이 리소스에서 레이아웃을 생성 한 다음 레이아웃을 확장하는 클래스의 인스턴스에 팽창 된 뷰를 추가하는 것입니다 (위에서 Marcos가 제안했듯이).

public class MLBalloonOverlayView extends FrameLayout { 

    public MLBalloonOverlayView(Context context, final OverlayItem overlayItem) { 
     super(context); 
     mOverlayItem = overlayItem; 
    } 

    public void create(final int resource, MapView mapView, final int markerID) { 
     // inflate resource into this object 
     TableLayout layout = new TableLayout(getContext()); 
     LayoutInflater.from(getContext()).inflate(resource, layout); 
     TableLayout.LayoutParams params = new TableLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     params.gravity = Gravity.NO_GRAVITY; 
     this.addView(layout, params); 
    } 
} 
1

물체를 물체에 팽창시킵니다.

public View create(final int resource, final OverlayItem item, 
        MapView mapView, final int markerID) { 
    LayoutInflater.from(getContext()).inflate(resource, this, true); 
    return this; 
} 
+0

불행하게도,이에 새로 팽창보기를 부착 '이'나는보기와 뷰 그룹은 (나는대로지도에보기를 추가하고하지를 필요 뷰 그룹으로보다는보기로 내 의도 된 목적을 위해 사용자 정의 풍선 뷰). – faridz

+0

보기가 구성된 레이아웃 인 경우보기뿐만 아니라 레이아웃을 확장하는 항목으로 작업해야합니다. –

관련 문제