Android 以编程方式使textview位于另一个textview下并位于图像右侧

Android 以编程方式使textview位于另一个textview下并位于图像右侧,android,textview,android-relativelayout,Android,Textview,Android Relativelayout,我以编程方式设置布局,因为我根据从请求中获得的图像数量填充布局。我要做的是在图像右侧创建两个textview,第二个在第一个下方。根据我在其他答案上的发现,我的第二个文本视图与图像重叠,不在另一个文本视图的下方 int counter = 0; while(mList.size()!=counter) { RelativeLayout row = new RelativeLayout(context); row.setLayoutParam

我以编程方式设置布局,因为我根据从请求中获得的图像数量填充布局。我要做的是在图像右侧创建两个textview,第二个在第一个下方。根据我在其他答案上的发现,我的第二个文本视图与图像重叠,不在另一个文本视图的下方

    int counter = 0;
    while(mList.size()!=counter)
    {
        RelativeLayout row = new RelativeLayout(context);
        row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));            

        ImageButton imgBtn = new ImageButton(context);
        Bitmap image = getImage(mList.get(counter));
        imgBtn.setImageBitmap(image);
        imgBtn.setId(counter + 1); // Because it need to be a positive integer.
        imgBtn.setBackground(null);
        imgBtn.setPadding(0, 0, 0, 0);
        row.addView(imgBtn);

        TextView firstText = new TextView(context);
        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        lp.addRule(RelativeLayout.RIGHT_OF, imgBtn.getId());
        lp.addRule(RelativeLayout.CENTER_IN_PARENT);
        firstText.setLayoutParams(lp);
        firstText.setId(counter+100);
        row.addView(firstText);

        TextView secondText = new TextView(context);
        RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        lp2.addRule(RelativeLayout.BELOW,firstText.getId());
        secondText.setLayoutParams(lp2);
        row.addView(secondText);

       ++counter;
       linlayout.addView(row);
    }

使用linearLayout而不是relative。在这种情况下,您不需要设置计数器和id。而是将setTag设置为视图。以使代码更具可读性

您只需设置行布局的方向,然后无需考虑其他参数来定位视图


我不是在添加代码,因为我知道你可以写得很好,只要改变方法就行了

的确,我没有任何重叠,但是文本视图并不像我想要的那样相对于图像,两个文本视图只是一个接一个。有没有办法使用LinearLayout使第二个文本视图位于第一个文本视图的下方,并且仍然位于图像的右侧?使用父文本作为LinearLayout L1,方向为水平,然后将图像添加到其中(L1)。再次使用方向垂直的线性布局(L2),将两个文本视图添加到其中(L2),然后将L2添加到L1,您将得到结果