2012-06-11 10 views
0

Я пытаюсь заставить ScrollView действовать как ListView. Таким образом, каждая строка будет TextView динамически добавляться. но программа вылетает из строя. У меня есть ScrollView внутри LinearLayout. Что я делаю неправильно? Благодарю.Динамическое добавление TextView в ScrollView на Android

Вот мой код

     scroll = (ScrollView)findViewById(R.id.scrollView1); 
        layout = (LinearLayout) findViewById(R.id.LinearLayout1); 
        layout.setBackgroundColor(Color.TRANSPARENT); 
        TextView[] tx = new TextView[10]; 
        for (int i = 0; i < 10; i++) { 
         tx[i] = new TextView(HelloWorldActivity.this); 
         tx[i].setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
        tx[i].setText("This is the textviewNo" + i); 
        layout.addView(tx[i]); 
        } 

        scroll.addView(layout); 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout1" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:gravity="center_horizontal" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/timeflag" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Large Text" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:textSize="50sp" 
    android:gravity="center"/> 



<Button 
    android:id="@+id/pause" 
    android:layout_width="match_parent" 
    android:layout_height="100dp" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/timeflag" 
    android:layout_marginTop="37dp" 
    android:text="Start" /> 


<LinearLayout 
    android:id="@+id/LinearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/pause" 
    android:orientation="vertical" > 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

    </ScrollView> 

</LinearLayout> 

</RelativeLayout> 
+1

Пожалуйста, добавьте ошибки вашего logcat. «Сбой программы» слишком расплывчато. – Sam

ответ

1

Scrollview Может иметь только одного ребенка. Если вы попытаетесь добавить более 1 ребенка в режим прокрутки, он сработает. У вас должен быть LinearLayout внутри scrollview, а затем динамически добавлять текстовые элементы в линейный макет.

+0

Хороший глаз, но автор добавляет LinearLayout в качестве дочернего элемента ScrollView 'scroll.addView (layout);' В этом случае дочерний элемент также является родителем ScrollView, что неверно. (Что это за песня из Deliverance?) – Sam

1

Вы пытаетесь добавить LinearLayout1 как ребенок своего собственного ребенка (будучи вашим собственным дедушкой, является запутанным понятием).

Изменение вы XML вокруг, как это:

<ScrollView 
    android:id="@+id/scrollView1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/pause" 
    > 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" > 

    </LinearLayout> 

</ScrollView> 
+0

+1 yes LinearLayout1 уже добавлен в xml, и вы снова добавляете его в java (воссоздаете его) ...... –

0

Вы не можете добавить взгляды на Scrollview. Вы можете добавлять их только в группу просмотра, например, линейную или релятивируемую.

Не совсем ясно, чего вы пытаетесь достичь, но что не так с использованием списка для этого? Вы можете установить максимальную высоту в списке. Или вы можете попробовать предложение wdziemia

Смежные вопросы