2013-04-27 8 views
1

에 표시되지 않습니다 부풀려 나는 내 문제는, 뷰 그룹을 확장하여 customed보기를 만든 비정상적보기, 하위보기가 표시되지 않습니다. 자식보기가 하드 코드보기 (예 : btn = new Button (ctx)) 일 때 표시됩니다!안드로이드 : 아이 (addView (chileView)) 뷰 그룹에 뷰를 추가 할 때</p>이 가, 아이 뷰가 있습니다 <p> 경우 : customed 뷰 그룹

강령, 표시하지 :

public class EdgeSwiper extends ViewGroup{ 

    public EdgeSwiper(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(context); 
    } 

    public EdgeSwiper(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public EdgeSwiper(Context context) { 
     super(context); 
     init(context); 
    } 
    View v; 
    private void init(Context context) { 
     v = View.inflate(context,R.layout.aview,null); 
     this.addView(v); 
    } 

    @Override 
    protected void onLayout(boolean arg0, int a, int b, int c, int d) { 
     v.layout(a, b, c, d); 
    } 
} 
+0

문제가있는 코드를 게시 할 수 있습니까? – Don

답변

1

내가 생각할 수있는 모든을 통해 정신적으로 실행 한 후, 나는 가능성의 몇 가지를 확인할 수 있으며, 동일한 더미 프로젝트를 만들었습니다. 어떤 이유로 ViewGroup 대신 FrameLayout에서 ViewChanger를 확장하면 ViewGroup이 chidl 뷰를 렌더링하는 데 필요한 항목이 부족하기 때문에 가능성이 높습니다 (onDraw를 재정의하려했지만 여전히 작동하지 않았습니다). FrameLayout의 일반적인 사용법 인 한 번에 하나의보기 만 표시하므로이 변경 작업을 수행하는 것이 좋습니다. ViewGroup에서 누락 된 그리기 기능을 분리하고 수정하는 것보다 훨씬 쉽습니다.

public class EdgeSwiper extends FrameLayout { 

당신이 제대로 작동하려면 (생성자에서 뷰를 추가하는) 원래의 디자인을 얻을 수 있도록하는 데 필요한 유일한 변경해야합니다.