2012-09-12 50 views
3

我有我自己的佈局傳遞的LayoutParams到ViewGroup中不工作

public class MyLayout extends ViewGroup 

內部的佈局,我把一些按鈕。這工作正常。但我TRIE添加的LayoutParams

ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(80, 80); 
Button btn = new Button(getActivity());     
btn.setLayoutParams(params);  
myLayout.addView(btn); 

和訪問它在MyLayout

View child = getChildAt(i); 
ViewGroup.LayoutParams params = child.getLayoutParams(); 

我只看到0作爲高度和寬度。我的代碼有什麼問題?

回答

2

嘗試在你的MyLayout類中創建自己的LayoutParams

事情是這樣的:

public static class LayoutParams extends ViewGroup.LayoutParams { 
    int x; 
    int y; 

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

    public LayoutParams(int w, int h) { 
     super(w, h); 
    } 
} 

然後,你將需要覆蓋在MyLayout類以下方法:

@Override 
    protected boolean checkLayoutParams(ViewGroup.LayoutParams p) { 
    return p instanceof LayoutParams; 
    } 

    @Override 
    protected LayoutParams generateDefaultLayoutParams() { 
    return new LayoutParams(LayoutParams.WRAP_CONTENT, 
     LayoutParams.WRAP_CONTENT); 
    } 

    @Override 
    public LayoutParams generateLayoutParams(AttributeSet attrs) { 
    return new LayoutParams(getContext(), attrs); 
    } 

    @Override 
    protected LayoutParams generateLayoutParams(ViewGroup.LayoutParams p) { 
    return new LayoutParams(p.width, p.height); 
    } 
相關問題