2012-04-12 4 views
0

У меня есть это довольно основной вид:Android - не получается прокрутить вид для прокрутки списка правильно

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     >   

<TextView 
    android:id="@+id/question_label"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Your question: " 
    />  

<TextView 
    android:id="@+id/question"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="" 
    />   

     <EditText 
      android:id="@+id/question_text" 
      android:layout_height="wrap_content" 
      android:hint="@string/question_comment_hint" 
      android:inputType="textMultiLine" 
      android:lines="4" 
      android:layout_width="fill_parent"> 
     </EditText> 

<Button 
      android:id="@+id/submit" 
      android:layout_height="wrap_content" 
      android:text="@string/submit" 
      android:onClick="sendFeedback" 
      android:layout_width="fill_parent"> 
     </Button>  



<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" >  

<TextView 
    android:id="@+id/please_wait"  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Please wait while the discussion loads..." 
    />  

    <ListView 
    android:id="@android:id/list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@+id/label" 
     android:textSize="20px" >   
    </ListView>   

    </LinearLayout> 
</ScrollView> 

</LinearLayout> 

То, что я надеялся, что делать с ним, чтобы позволить пользователю прокручивать весь список Комментарии. На данный момент, когда появляется больше комментариев, тогда на экране появляется пробел, экран не прокручивается вниз.

Любая идея, что я должен изменить, чтобы включить прокрутку комментариев?

Спасибо!

+2

Не уверен, что это проблема, но у вас никогда не должно быть списка в прокрутке в Android. – coder

+0

@coder Как получилось? Ты прав. Для меня это бесполезно, несмотря ни на что. Как бы вы организовали такую ​​страницу? – GeekedOut

+0

Для чего предназначен список? Все комментарии? – coder

ответ

1

Я полностью покончил с scrollview - на основе того, что я ДУМАЮ, что вы пытаетесь выполнить, поскольку listview будет обрабатывать прокрутку самостоятельно. Как например:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    >   

<TextView 
android:id="@+id/question_label"  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Your question: " 
/>  

<TextView 
android:id="@+id/question"  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="" 
/>   

    <EditText 
     android:id="@+id/question_text" 
     android:layout_height="wrap_content" 
     android:hint="@string/question_comment_hint" 
     android:inputType="textMultiLine" 
     android:lines="4" 
     android:layout_width="fill_parent"> 
    </EditText> 

<Button 
     android:id="@+id/submit" 
     android:layout_height="wrap_content" 
     android:text="@string/submit" 
     android:onClick="sendFeedback" 
     android:layout_width="fill_parent"> 
    </Button>  

<TextView 
android:id="@+id/please_wait"  
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Please wait while the discussion loads..." 
/>  

<ListView 
android:id="@android:id/list" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@+id/label" 
    android:textSize="20px" >   
</ListView>   

Разница теперь, является то, что TextView с идентификатором «Please_wait» не будет прокручиваться со списком. Если вам понадобится прокрутка списка, я бы рекомендовал использовать динамически построенный TableLayout в java для вашего списка, а затем добавить это и ваше текстовое представление в ScrollView. TableLayout не выполняет прокрутку самостоятельно, и поэтому это лучшее решение, чем использование ListView внутри ScrollView. Если вы хотите сделать это таким образом, дайте мне знать, и я отправлю примерный код.

+0

спасибо - позвольте мне попробовать это сейчас. Я знал, что у меня возникают проблемы с вложенными scrollviews :) – GeekedOut

+0

о, да, что полностью сработало! Спасибо. Вы определенно жили до вашего имени экрана, а затем и некоторых! Браво. – GeekedOut

1

Похоже, вы пытаетесь добавить заголовок выше своих комментариев в ListView. Как отметил кодер, вы не должны помещать ListView в ScrollView. Вы должны взглянуть на добавление вида заголовка непосредственно в ListView (см. addHeaderView).

1

в основном вы можете сделать так: избавиться от scrollview и загрузить textview. установить простой адаптер к ListView, как это:

fList = (ListView)findViewById(R.id.lstview); 
fList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[]{"Please wait while the discussion loads..."})); 

чем получить ваши комментарии и установить на свой ListView.

list.setAdapter(adapter); 
1

У вас не должно быть ListView внутри ScrollView. надуть LinearLayout (по вертикали) вместо:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/question_label" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Your question: " /> 

    <TextView 
     android:id="@+id/question" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="" /> 

    <EditText 
     android:id="@+id/question_text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/question_comment_hint" 
     android:inputType="textMultiLine" 
     android:lines="4" > 
    </EditText> 

    <Button 
     android:id="@+id/submit" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:onClick="sendFeedback" 
     android:text="@string/submit" > 
    </Button> 

    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/please_wait" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:text="Please wait while the discussion loads..." /> 

      <LinearLayout 
       android:id="@+id/comments_layout" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:visibility="invisible" > 
      </LinearLayout> 
     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

В коде:

LinearLayout commentsLayout = (LinearLayout) findViewById(R.id.comments_layout); 

Для заполнения LinearLayout:

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    for(int i = 0; i < comments.size(); i++){ 

     View childView = inflater.inflate(R.layout.comment_list_item, commentsLayout, false); 

     TextView comment = (TextView) childView.findViewById(R.id.comment); 

     comment.setText("Something"); 

     categoriesLayout.addView(childView, i); 

    } 

Что-то вроде этого, надеюсь, что это помогает.

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