Android:以编程方式添加两个文本视图

Mar*_*tin 12 java android android-linearlayout

我试图以编程方式将视图添加到线性布局.

    LinearLayout layout     = (LinearLayout) findViewById(R.id.info);
    String [] informations  = topOffer.getInformations();
    TextView informationView;
    View line = new View(this);
    line.setLayoutParams(new LayoutParams(1, LayoutParams.FILL_PARENT));
    line.setBackgroundColor(R.color.solid_history_grey);
    for (int i = 0; i < informations.length; i++) {
        informationView = new TextView(this);
        informationView.setText(informations[i]);
        layout.addView(informationView, 0);
        layout.addView(line, 1);
    }
Run Code Online (Sandbox Code Playgroud)

首先,我只添加了informationsView,一切正常.在添加了line-View之后,它崩溃了,出现以下错误:

java.lang.IllegalStateException:指定的子级已有父级.您必须首先在孩子的父母上调用removeView().

所以我尝试了addView(View v,int index),但它崩溃了同样的消息......

有人有解决方案吗?

谢谢,马丁

vsm*_*vsm 12

正如gpmoo7所说,你需要在循环中每次创建一个新视图

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.linear);

    LinearLayout layout = (LinearLayout) findViewById(R.id.linear);

    String[] informations = new String[] { "one", "two", "three" };
    TextView informationView;

    for (int i = 0; i < informations.length; i++) {
        View line = new View(this);
        line.setLayoutParams(new LayoutParams(1, LayoutParams.MATCH_PARENT));
        line.setBackgroundColor(0xAA345556);
        informationView = new TextView(this);
        informationView.setText(informations[i]);
        layout.addView(informationView, 0);
        layout.addView(line, 1);
    }

}
Run Code Online (Sandbox Code Playgroud)


mma*_*eum 2

您不能在同一父视图中多次添加同一子视​​图。您每次都需要创建一个新视图或膨胀一个新视图。