我正在尝试将xml-layout扩展为自定义View-class,然后将其放入实际软件中的LinearLayout中。经过一些谷歌搜索后,我设法创建了自定义类,通过使用以下类来扩展布局:
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时,它肯定会膨胀:
layout.addView(new LitteringView(getActivity()));
问题是它需要整个屏幕,而屏幕应该在LinearLayout的三个孩子之间平均分配。其他视图也是动态创建的。我怎么能阻止它占据整个空间?
我正在尝试创建一个自定义View /类并将其函数打包到其中,然后我可以轻松地将其添加到父布局(在本例中为LinearLayout),同时希望利用xml来定义View的布局。
答案 0 :(得分:1)
您需要为视图使用“权重”。一个简单的例子:
Layout.LayoutParams params = new LinearLayout.LayoutParams(width, height, weight);
您需要针对您的情况进行优化。同等地给你所有的观点一个权重值(例如:所有观点都是1),他们应该分享观点。