2013-04-27 79 views
1

表明我通過擴展ViewGroup中取得了customed看法,我的問題是:安卓:充氣視圖不customed的ViewGroup

添加子(addView(chileView))查看到ViewGroup中時,如果孩子的觀點是一個充氣的視圖,子視圖不會顯示。但是當子視圖是硬編碼視圖(比如,btn = new Button(ctx))時,它會顯示!

碼,而不是顯示:

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 2013-04-27 20:04:56

回答

1

通過一切我能想到的精神上運行後,我創建了一個虛擬的項目等同於該檢查出幾種可能性。出於某種原因,ViewChanger從FrameLayout擴展而不是ViewGroup使得這個工作 - 很可能是因爲ViewGroup缺乏渲染它的chidl視圖所需的東西(我嘗試覆蓋onDraw,但它仍然不起作用)。由於您一次只顯示一個視圖 - 通常使用FrameLayout - 我建議僅進行此更改;它可能比孤立和修復ViewGroup中缺失的繪製功能要容易得多。

public class EdgeSwiper extends FrameLayout { 

應該是你需要得到原始設計(增加從構造觀點)正常工作的唯一變化。