相对布局中的动态文本视图

11
我想在我的项目中为评论部分使用动态布局,但当我将textview的settext动态设置时,输出只出现在屏幕顶部。并且它将输出放在其他输出之上。

我试图在项目中的评论部分使用动态布局,但当我动态地设置textview的setText时,输出只出现在屏幕顶部,并且将输出放在其他输出之上。

RelativeLayout ll=(RelativeLayout) findViewById(R.id.rl);
        for(int i = 0; i < 20; i++) {
        TextView cb = new TextView(this);
        cb.setText("YORUMLAR"+yorum[0]+i);

         cb.setTextSize(30);
          ll.addView(cb); 

        }

那么我如何将输出线性地放在屏幕底部。


1
通过为您的TextView设置适当的相对属性,您可以将其放置在屏幕上的任何位置;目前,您只是设置文本而没有位置,缺省情况下它位于屏幕顶部。 - Adinia
3个回答

23

你应该使用 LinearLayout 自动添加一个 TextView 跟在另一个后面。


假设你不能没有 RelativeLayout,你需要为你创建的每个 TextView 动态生成id,以便将一个视图放在另一个下面。 以下是示例:

public class HelloWorld extends Activity
{       
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);

        RelativeLayout layout = (RelativeLayout)findViewById(R.id.layout);

        Random rnd = new Random();
        int prevTextViewId = 0;     
        for(int i = 0; i < 10; i++)
        {                       
            final TextView textView = new TextView(this);
            textView.setText("Text "+i);     
            textView.setTextColor(rnd.nextInt() | 0xff000000);            

            int curTextViewId = prevTextViewId + 1;
            textView.setId(curTextViewId);
            final RelativeLayout.LayoutParams params = 
                new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 
                                                RelativeLayout.LayoutParams.WRAP_CONTENT);

            params.addRule(RelativeLayout.BELOW, prevTextViewId);
            textView.setLayoutParams(params);

            prevTextViewId = curTextViewId;
            layout.addView(textView, params);
        }              
    }    
}

enter image description here



非常感谢!我有一个可以有空值的光标。人们不喜欢看到空白的东西,所以我创建了一个动态文本视图,使用“如果不为空,则执行此操作”的语句,然后使用您的示例为需要查看的每个文本视图创建动态文本视图ID。关键是在每个if语句中设置curTextViewId = prevTextViewID + 1,然后在每个if语句的末尾确保设置prevTextViewId = curTextViewId,以便下一个if语句获取新的prevTextViewId。谢谢! - Opy

2

您需要提供新添加视图的位置。如@Adinia所说,如果没有指定位置,它将默认对齐到顶部。因此,您可以使用以下代码在RelativeLayout中完成此操作;

RelativeLayout containerLayout = (RelativeLayout) findViewById(R.id.container);

for (int i = 0; i < 20; i++) {

    TextView dynaText = new TextView(this);

    dynaText.setText("Some text " + i);
    dynaText.setTextSize(30);

    // Set the location of your textView.
    dynaText.setPadding(0, (i * 30), 0, 0);

    containerLayout.addView(dynaText);
}

如果你想要连续显示多个文本视图,那么你应该选择LinearLayout。

1

您也可以在相对布局中添加动态文本视图。这里我附上了一些代码,这可能会帮助您。

    RelativeLayout ll=(RelativeLayout) findViewById(R.id.rl);
    for(int i = 0; i < 20; i++) 
    {
       TextView cb = new TextView(this);
       cb.setText("YORUMLAR"+yorum[0]+i);
       cb.setTextSize(30);
       cb.setId(2000+i);
       RelativeLayout.LayoutParams TextViewLayoutParams = new RelativeLayout.LayoutParams(100,100);
       if (i != 0 )DispViewLayoutParams.addRule(RelativeLayout.BELOW, 2000 - (i-1));
       ll.addView(cb,TextViewLayoutParams); 
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接