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