6

Sto cercando di creare un layout con un'intestazione, un banner sotto di esso e quindi un paio di ListView sotto il banner. Voglio che lo schermo completo sia scorrevole tranne l'intestazione. Ora so che ListView non scorre all'interno di ScrollView, quindi ho impostato l'altezza di ListView abbastanza grande da mostrare tutti gli elementi. Il problema è che, anche dopo queste modifiche, vedo che ListView sta scorrendo in modo indipendente e lo schermo completo non è scorrevole.Android: ScrollView non sta scorrendo

`

<include 
    android:id="@+id/logo_header" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/screen_header" /> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

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

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:orientation="vertical" 
      android:layout_weight="0.8" 
      android:background="#f2f2f2"> 

      <include 
       android:id="@+id/mcUser" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       layout="@layout/complaint_reporters_details" 
       android:layout_weight="2" /> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="horizontal" 
       android:weightSum="9" 
       android:layout_weight="2"> 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" 
        android:weightSum="1" 
        android:layout_weight="3" 
        android:focusableInTouchMode="false" 
        android:paddingLeft="30dp" 
        android:paddingRight="30dp"> 

        <ImageView android:id="@+id/mcShowList" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:gravity="center" 
         android:layout_marginTop="5dp" 
         android:layout_marginBottom="5dp" 
         android:scaleType="fitXY" 
         android:src="@drawable/list_icon" 
         android:layout_weight="0.2" /> 

        <TextView android:id="@+id/mcShowList_label" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:gravity="center" 
         android:textStyle="bold" 
         android:textSize="12sp" 
         android:textColor="#929292" 
         android:maxLines="1" 
         android:text="List" 
         android:layout_weight="0.8" 
         android:layout_marginTop="-8dp" /> 

       </LinearLayout> 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" 
        android:weightSum="1" 
        android:layout_weight="3" 
        android:gravity="center_vertical|center_horizontal" 
        android:paddingLeft="30dp" 
        android:paddingRight="30dp"> 

        <ImageView android:id="@+id/mcShowMap" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:gravity="center" 
         android:layout_marginTop="5dp" 
         android:layout_marginBottom="5dp" 
         android:scaleType="fitXY" 
         android:src="@drawable/map_view" 
         android:layout_weight="0.2"/> 

        <TextView android:id="@+id/mcShowMap_label" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:gravity="center" 
         android:textStyle="bold" 
         android:textSize="12sp" 
         android:textColor="#929292" 
         android:maxLines="1" 
         android:text="Map" 
         android:layout_weight="0.8" 
         android:layout_marginTop="-8dp" /> 
       </LinearLayout> 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:orientation="vertical" 
        android:weightSum="1" 
        android:layout_weight="3" 
        android:focusableInTouchMode="false" 
        android:paddingRight="30dp" 
        android:paddingLeft="30dp"> 

        <ImageView android:id="@+id/mcShowAnalytics" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:gravity="center" 
         android:layout_marginTop="5dp" 
         android:layout_marginBottom="5dp" 
         android:scaleType="fitXY" 
         android:src="@drawable/analytics_icon" 
         android:layout_weight="0.2" /> 

        <TextView android:id="@+id/mcShowAnalytics_label" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:gravity="center" 
         android:textStyle="bold" 
         android:textSize="12sp" 
         android:textColor="#929292" 
         android:maxLines="1" 
         android:text="Analytics" 
         android:layout_weight="0.8" 
         android:layout_marginTop="-10dp" /> 

       </LinearLayout> 

      </LinearLayout> 

     </LinearLayout> 

     <RelativeLayout 
      android:layout_weight="0.2" 
      android:layout_width="fill_parent" 
      android:layout_height="400dp"> 

      <FrameLayout 
       android:id="@+id/mcMapContainer" 
       android:layout_width="match_parent" 
       android:layout_height="fill_parent"/> 

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

       <FrameLayout 
        android:id="@+id/mcChartContainer" 
        android:layout_gravity="center" 
        android:layout_width="200dp" 
        android:layout_height="200dp"/> 

       <GridView 
        android:id="@+id/mcAmenityList" 
        android:layout_height="0dp" 
        android:layout_weight="7" 
        android:layout_width="match_parent" 
        android:numColumns="3"/> 

      </LinearLayout> 

      <LinearLayout 
       android:id="@+id/mcListContainer" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:weightSum="1"> 

       <TextView 
        android:text="Open Complaints" 
        android:textColor="@color/red_btn_bg_color" 
        android:textSize="18dp" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:gravity="center_vertical|center_horizontal" 
        android:padding="5dp" /> 

       <ListView 
        android:id="@+id/mcListOpen" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"/> 

       <TextView 
        android:text="Closed Complaints" 
        android:textColor="@color/red_btn_bg_color" 
        android:textSize="18dp" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:gravity="center_vertical|center_horizontal" 
        android:padding="5dp" /> 

       <ListView 
        android:id="@+id/mcListClosed" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content"/> 

      </LinearLayout> 

     </RelativeLayout> 

    </LinearLayout> 

</ScrollView> 

`

+0

prega di fare riferimento la mia risposta nel seguente post [Aggiunta un'altra vista] (https://stackoverflow.com/questions/30282580/scrollview-not-scrolling -android) –

+0

Si prega di vedere la mia risposta in un'altra domanda .. [Aggiunta di un'altra vista vuota] (https://stackoverflow.com/questions/30282580/scrollview-not-scrolling-android) –

risposta

7

Modificare l'altezza della vista di scorrimento da match_parent a wrap_content. Perché la visualizzazione di scorrimento abilita lo scorrimento solo se la sua altezza totale è maggiore dell'altezza della vista genitore. vale a dire sostituire

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fillViewport="true"> 

con questo codice:

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true"> 
+0

Ho reso l'altezza e la larghezza del layout a "wrap_content". Lo scorrimento continuo non funziona. – vaibhav

+1

Modifica l'altezza dei layout lineari anche per wrap_content, quindi prova. –

+0

L'avevo fatto. Ma appena realizzato che l'altezza del RelativeLayout che ha il ListView, è stato risolto. Cambiarlo in "fill_parent" ha risolto il problema. – vaibhav

0

Si può provare questo,

listView.setOnTouchListener(new OnTouchListener() { 

public boolean onTouch(View v, MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_MOVE) { 
     return true; 
    } 
    return false; 
    } 
    }); 
2

ho usato il seguente metodo più volte su diverse applicazioni. Io uso una sottoclasse speciale di ListView:

package com.yourcompany.appname.views; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.view.ViewGroup; 
import android.widget.ListView; 

public class NonScrollableListView extends ListView { 
    public NonScrollableListView(Context context) { 
     super(context); 
    } 

    public NonScrollableListView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public NonScrollableListView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
       Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom); 
     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } 
} 

Poi nel layout, invece di utilizzare 's, usare qualcosa di simile a questo:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
    <com.yourcompany.appname.views.NonScrollableListView 
     android:id="@+id/listId" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     /> 
</LinearLayout> 

Spero che questo aiuti!

+0

Grazie Jonathan. Ciò rende il ListView completamente espanso, cosa che stavo facendo anche prima, anche se questo è un modo migliore e più chiaro per farlo. Ma anche ora, ScrollView non scorre per me e posso vedere solo gli elementi che si adattano allo schermo. – vaibhav

+0

@vaibhav, hai anche impostato un'altezza di 400 dpi nella tua vista relativa. Dovrebbe essere wrap_content in modo che ci sia qualcosa da scorrere nella vista di scorrimento? In generale, le viste nella vista di scorrimento dovrebbero racchiudere il contenuto verticalmente in modo che utilizzino lo spazio verticale aggiuntivo offerto dalla visualizzazione pergamena. – Jon

+0

Questo è corretto. L'ho capito ieri e l'ho risolto. Grazie per l'aiuto. Sfortunatamente, non ho abbastanza punti reputazione da far valere la tua risposta. – vaibhav

0

lista put vista all'altra xml e includerlo come questo qui sotto

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<include layout="@layout/show_message_header" /> 
    <ScrollView 
     android:id="@+id/myscrollview_Show_message" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="@dimen/header" 
     android:fadingEdge="none" 
     android:fillViewport="false" 
     android:paddingRight="0dp" 
     android:scrollbarAlwaysDrawVerticalTrack="false" 
     android:scrollbarSize="0dp" 
     android:scrollbarStyle="insideOverlay" 
     android:scrollbars="none" > 
     <TableLayout 
      android:id="@+id/Show_message_dynamic_table" 
      android:layout_width="match_parent" 
      android:layout_height="fill_parent" > 
      <include layout="@layout/desinglayoutforlistviewincludehere" /> 
     </TableLayout> 
    </ScrollView> 

Problemi correlati