2013-08-16 50 views
0

我想将xml布局充气到自定义视图类中,然后将其放置到实际软件中的LinearLayout中。一些谷歌搜索后,我成功地创建通过使用下面的类膨胀布局定制类:如何将xml布局充气到子视图

layout.addView(new LitteringView(getActivity())); 

的问题是,它需要的:

public class LitteringView extends RelativeLayout 
{ 

    public LitteringView(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
     View.inflate(context, R.layout.littering_layout, this); 

    } 


    public LitteringView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
     // TODO Auto-generated method stub 
     for(int i = 0 ; i < getChildCount() ; i++){ 
      getChildAt(i).layout(l, t, r, b); 
     } 
    } 


    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     // TODO Auto-generated method stub 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 





} 

现在,当我把它添加到的LinearLayout绝对膨胀整个屏幕,而屏幕应该在LinearLayout的三个孩子之间平分。其他视图也是动态创建的。我如何防止它占据整个空间?

我想创建一个自定义视图/类,并打包它的函数,然后我可以很容易地添加到父布局(在这种情况下LinearLayout),同时要利用XML来定义视图的布局。

回答

1

您需要为您的意见使用“重量”。一个简单的例子:

Layout.LayoutParams params = new LinearLayout.LayoutParams(width, height, weight); 

你需要为你的情况优化它。给所有观点平均分配一个权重值(例如:所有观点均为1),他们应该分享观点。