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 の 3 つの子の間で均等に分割する必要があるのに、画面全体を使用することです。他のビューも動的に作成されます。スペース全体を占有しないようにするにはどうすればよいですか?
私は 1 つのカスタム ビュー/クラスを作成し、その関数をその中にパッケージ化しようとしています。これにより、xml を使用してビューのレイアウトを定義したいときに、親レイアウト (この場合は LinearLayout) に簡単に追加できます。