次のコードがあります。以下を参照してください。膨張したレイアウトにプログラムでビューを追加したい - レイアウトに追加したいビューのサイズは、ViewTree オブザーバーで受信している別のビューのサイズに依存するため (ViewTree オブザーバーの事前描画リスナーは、 「fill_parent」を使用するときにレイアウト項目のサイズを取得する機会があるため、サイズを取得するには事前に描画する必要があります)。
これどうやってするの?LayoutInflater は、View を追加する方法を提供しません。プログラムでビューを作成する方法を知っていますが、そのような場合にビューを追加するにはどうすればよいですか?
PS: getView メソッドは ListView に使用されます。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
if (convertView == null) {
switch (type) {
case TYPE_ITEM0:
convertView = mInflater.inflate(R.layout.event_details_headline, null);
TextView toptext = (TextView) convertView.findViewById(R.id.toptext);
toptext.setText(mData.get(0).getTitle());
final ImageView imageView = (ImageView) convertView.findViewById(R.id.flyer);
AwesomeActivity.imageLoader.DisplayRoundedImage(mData.get(0).getFlyerURL(), imageView);
final int[] flyerheight = {0};
final int[] flyerwidth = {0};
final ImageView border = (ImageView) convertView.findViewById(R.id.border);
ViewTreeObserver vto = imageView.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
flyerheight[0] = imageView.getMeasuredHeight();
flyerwidth[0] = imageView.getMeasuredWidth();
// Here I want to add an ImageView based on flyerWidth and flyerHeight
return true;
}
});
break;
}