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

Android 相对布局中的动态文本视图,android,Android,我尝试在项目的注释部分使用动态布局,但当我动态设置textview的文本时,输出仅显示在屏幕顶部。它将输出置于其他输出之上 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);

我尝试在项目的注释部分使用动态布局,但当我动态设置textview的文本时,输出仅显示在屏幕顶部。它将输出置于其他输出之上

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); 

        }
RelativeLayout ll=(RelativeLayout)findViewById(R.id.rl);
对于(int i=0;i<20;i++){
TextView cb=新的TextView(本);
cb.setText(“YORUMLAR”+yorum[0]+i);
cb.setTextSize(30);
ll.addView(cb);
}

因此,如何将输出线性地放在屏幕底部。

您应该使用
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);
        }              
    }    
}
公共类HelloWorld扩展活动
{       
@凌驾
创建时的公共void(Bundle savedInstanceState)
{       
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
RelativeLayout布局=(RelativeLayout)findViewById(R.id.layout);
随机rnd=新随机();
int-prevTextViewId=0;
对于(int i=0;i<10;i++)
{                       
最终文本视图文本视图=新文本视图(本);
textView.setText(“Text”+i);
textView.setTextColor(rnd.nextInt()| 0xff000000);
int CurtTextViewId=prevTextViewId+1;
setId(curTextViewId);
最终RelativeLayout.LayoutParams参数=
新的RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_父级,
RelativeLayout.LayoutParams.WRAP_内容);
params.addRule(RelativeLayout.bellow,prevTextViewId);
textView.setLayoutParams(参数);
prevTextViewId=CurtTextViewId;
layout.addView(文本视图,参数);
}              
}    
}


您必须提供新添加视图的位置。正如@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);
}
RelativeLayout containerLayout=(RelativeLayout)findViewById(R.id.container);
对于(int i=0;i<20;i++){
TextView dynaText=新的TextView(此);
dynaText.setText(“某些文本”+i);
dynaText.setTextSize(30);
//设置文本视图的位置。
设置填充(0,(i*30),0,0);
containerLayout.addView(dynaText);
}

如果要逐个显示多个文本视图,则应使用LinearLayout。

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

    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); 
    }
RelativeLayout ll=(RelativeLayout)findViewById(R.id.rl);
对于(int i=0;i<20;i++)
{
TextView cb=新的TextView(本);
cb.setText(“YORUMLAR”+yorum[0]+i);
cb.setTextSize(30);
cb.setId(2000+i);
RelativeLayout.LayoutParams TextViewLayoutParams=新的RelativeLayout.LayoutParams(100100);
如果(i!=0)DispViewLayoutParams.addRule(RelativeLayout.BELOW,2000-(i-1));
ll.addView(cb、TextViewLayoutParams);
}

…通过为文本视图设置适当的相对属性;现在,您只需设置文本,没有位置,默认在屏幕顶部。非常感谢!我有一个可以有空值的游标。人们讨厌看到空白的东西,所以我用“如果不是NULL,做这个”语句创建动态文本视图,然后用你的例子为每个需要查看的动态文本视图ID创建动态视图。关键是在每个if语句中设置CurtTextViewId=prevTextViewID+1,然后在每个if语句的末尾确保设置prevTextViewID=CurtTextViewId,以便下一个if语句获得新的prevTextViewID。谢谢