Java android中的ScrollView

Java android中的ScrollView,java,android,Java,Android,我有一个TableLayout,其中的行是动态创建的,因此它可能会跨越有限的屏幕大小。为了避免这种情况,我尝试在创建表格布局后添加一个滚动视图,如下所示: TableLayout tl = (TableLayout) findViewById(R.id.tableLayout1); ScrollView sv = new ScrollView(this); tl.addView(sv); for (i = 0; i < count; i++) { TableRow tr = ne

我有一个TableLayout,其中的行是动态创建的,因此它可能会跨越有限的屏幕大小。为了避免这种情况,我尝试在创建表格布局后添加一个滚动视图,如下所示:

TableLayout tl = (TableLayout) findViewById(R.id.tableLayout1);
ScrollView sv = new ScrollView(this);
tl.addView(sv);

for (i = 0; i < count; i++) {
    TableRow tr = new TableRow(this); 
    .
    .
    .
    .  //finally iam adding this table row to layout.
    tl.addView(tr, new TableLayout.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    submit.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent myIntent = new Intent(getApplicationContext(),
            SmsActivity.class);
            // setMessageBody((String) tvf.getContentDescription());
            // submit.setEnabled(false);
            String messageText = (String)  valueTV.getText();
            String dateText = (String) labelTV.getText();
            myIntent.putExtra("messageText",dateText+"\n"+message);

            startActivity(myIntent);
        }});
}

问题是什么?我如何解决它?

您需要将TableLayout添加到ScrollView,而不是相反。

ScrollView只能有一个子项,如果您尝试添加多个子项,将抛出非法状态异常。典型的做法是滚动视图,其中包含另一个视图,其中包含要滚动的视图

话虽如此,你似乎得到了一种不同类型的非法州例外,所以我不能100%肯定这就是问题所在


但在我看来,真正的解决方案不是动态地填充ScrollView,而是使用ListView,它明确地用于这类事情。这项工作稍微多了一点,但在性能和可扩展性方面非常有价值。

我将其更改为ScrollView sv=new ScrollView(this);TableLayout tl=(TableLayout)findViewById(R.id.tableLayout1);sv.addView(tl);但它仍然会强制关闭并给出以下错误06-28 15:11:11.013:error/AndroidRuntime(1465):由以下原因引起:java.lang.IllegalStateException:指定的子级已具有父级。您必须首先在子视图的父视图上调用removeView()。@ramtej,这是因为tablelayout已经从XML中膨胀,并且有父视图,所以您不能将该特定视图添加到scrollview,所以请修改XML布局,使表布局成为scrollview@ramtej字体正如Azlam所说,在XML文件中包括ScrollView,而不是在代码中创建它。
06-28 14:41:49.533: ERROR/AndroidRuntime(1256): Caused by: java.lang.StringIndexOutOfBoundsException