2012-02-08 19 views
0

GridViewに入るRelativeLayoutのImageViewの下にTextViewを表示します。私は試しました:プログラマチックにRelativeLayoutにビューを配置

public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     RelativeLayout rl = new RelativeLayout(context); 
     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FillParent, ViewGroup.LayoutParams.FillParent); 
     ImageView imageView; 
     TextView tv; 

     imageView = new ImageView(context); 
     imageView.LayoutParameters = new GridView.LayoutParams(250, 250); 
     imageView.SetScaleType(ImageView.ScaleType.CenterCrop); 
     imageView.SetPadding(8, 8, 8, 8); 
     imageView.SetImageResource(thumbIds[position]); 
     imageView.Id = position; 

     lp.AddRule(LayoutRules.Below, position); 
     lp.AddRule(LayoutRules.CenterHorizontal); 

     tv = new TextView(context); 
     tv.Text = stringIds[position].ToString(); 
     tv.SetTextSize(Android.Util.ComplexUnitType.Dip, 20); 
     tv.SetTextColor(Android.Graphics.Color.WhiteSmoke); 
     tv.LayoutParameters = lp; 

     rl.AddView(imageView); 
     rl.AddView(tv); 

     return rl; 
    } 

しかし、TextViewは常にImageViewの上に表示されます。

答えて

0

私のコンテンツは動的ではないので、私はPaintで画像を編集し、画像の下にテキストを配置するだけで問題を解決しました。その後、ImageViewの背景を作りました。

1

this questionをチェックしてください。

rl.AddView(tv)に電話するときは、LayoutParams rl.AddView(tv, lp)を含める必要があります。

+0

私は私がフォローしているかわかりません。両方のビューに同じLayoutParametersを追加するのではなく、TextViewでLayoutParameters(lp)を設定しているだけなので、私はその位置について気にしています。私はImageViewのどこにいてもそれを望んでいます。 – jmease

+0

ああ、申し訳ありませんが、私は間違って質問を読んでいます。私の答えを更新しました。 –

+0

それを試してみてください。私がtv.LayoutParameters = lpを持っていたときとは何か違うことはしていないようです。奇妙なことは、2つの異なるImageViewと2つのTextViewがあることです.2番目のセットは、上のImageViewとその下のTextViewで正しく表示されます。最初のセットは2つのオーバーラップでまだ表示されます。 – jmease

関連する問題