0

私の要件は、3 つのビュー (つまり、ImageView、TextView、TextView) を垂直方向に動的に表示することです。

以下のプログラムが気に入りました。しかし、それは機能していません。誰か助けてください。以下のコードを参照してください

    for (int i = 0; i < 10; i++) {
    final RelativeLayout relativeLayout=new RelativeLayout(this);
    final ImageView imageView=new ImageView(this);
    imageView.setId(100+i);
    imageView.setBackgroundResource(R.drawable.ic_launcher);
    final RelativeLayout.LayoutParams newParams = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    relativeLayout.post(new Runnable() {

        @Override
        public void run() {
            relativeLayout.addView(imageView);              
        }
    });
    final TextView textView=new TextView(this);
    textView.setId(200+i);
    String data="Click"+"\n"+"Show";
    textView.setText("click");


    newParams.addRule(RelativeLayout.BELOW, imageView.getId());
    newParams.addRule(RelativeLayout.ALIGN_LEFT, imageView.getId());
    relativeLayout.post(new Runnable() {

        @Override
        public void run() {
            relativeLayout.addView(textView, newParams);                
        }
    });
    final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT,
            RelativeLayout.LayoutParams.WRAP_CONTENT);
    final TextView text=new TextView(this);
    text.setId(200+i);
    //String data="Click"+"\n"+"Show";
    text.setText("data");


    params.addRule(RelativeLayout.BELOW, textView.getId());
    params.addRule(RelativeLayout.ALIGN_LEFT, textView.getId());
    relativeLayout.post(new Runnable() {

        @Override
        public void run() {
            relativeLayout.addView(text, params);               
        }
    });
       linearLayout.post(new Runnable() {

        @Override
        public void run() {
            linearLayout.addView(relativeLayout);

        }
    });
    }
4

1 に答える 1

0

LinearLayout垂直方向に設定して使用することを検討してください。このような場合、プログラムで使用する方が簡単だと思います。

以下はサンプルコードの一部です:

LinearLayout linearLayout = new LinearLayout(this);
linearLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
linearLayout.setOrientation(LinearLayout.VERTICAL);

linearLayout.addView(childView1);
linearLayout.addView(childView2);
linearLayout.addView(childView3);

rootView.addView(linearLayout);

childView1となりchildView2childView3縦に表示されます。

もちろん、それに応じてコードを変更する必要があります。

于 2013-07-16T14:38:47.510 に答える