2017-01-04 1 views
0

scrollview는 어떤 이유로 작동하지 않습니다. 나는 선형 레이아웃을 LineView 내에서 하나의 선형 레이아웃과 LinearLayout 내부의리스트 뷰를 가지고 있습니다. 내가 뭘 잘못 했니?안드로이드 Scrollview ListView를 포함하는 선형 레이아웃에서

아래는 제 레이아웃 파일입니다.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="@color/colorWhite" 
    android:layout_height="wrap_content"> 

<LinearLayout 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_movie_detail" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:background="@color/colorWhite" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.netbigs.apps.moviesat.MovieDetail" 
android:orientation="vertical"> 


<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imView" 
    android:layout_gravity="center" 

    android:layout_marginTop="8dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerVertical="true" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/tvmvname" 
    android:paddingTop="10dp" 
    android:textColor="@color/colorBg" 
    android:textSize="16sp" 
    android:textStyle="normal|bold" 
    android:hint="Movie Name" 
    android:layout_gravity="center" 
    android:textAlignment="center" 
    android:layout_centerVertical="true" 

    android:layout_above="@+id/tvmvdate" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="18dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAlignment="center" 
    android:layout_gravity="center" 
    android:id="@+id/tvmvdate" 
    android:textColor="@color/colorBg" 
    android:hint="Release Date" 
    android:layout_marginBottom="14dp" 

    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/tvmvinfo" 
    android:layout_gravity="center" 
    android:textColor="@color/colorBg" 
    android:textAlignment="center" 

    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" /> 

<com.freeapps.apps.mosoet.NonScrollListView 
    android:id="@+id/theatrelist" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 


    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="5dp"> 


</com.freeapps.apps.mosoet.NonScrollListView> 


</LinearLayout> 

</ScrollView> 

NonScrollListView 클래스는 목록보기 헤더를 사용할 수 있습니다

public class NonScrollListView extends ListView { 

public NonScrollListView(Context context) { 
    super(context); 
} 
public NonScrollListView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
} 
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
} 
@Override 
public 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(); 
} 
} 
+0

당신의 모든 생각은 잘못 내부 목록보기 헤더가 아닌 목록보기를 사용하여. scrollView 내부에 listView를 포함하면 안됩니다. 그건 의미가 없어요, listViews는 본질적으로 스크롤됩니다. 당신이 성취하려는 것을 다시 생각하십시오. scrollView를 사용하고 있기 때문에 일종의 스크롤을 원하지만, 사용자 정의 "NonScrollListView"클래스를 사용하여 스크롤하는 것을 막으려하고 있습니다. 응?! 일반 Listview를 사용하여 scrollView를 제거하면 더 나은 성능을 볼 수있을뿐만 아니라 코드가 실제로 작동합니다. – portfoliobuilder

+0

데이터베이스에서 데이터 목록을 가져오고 있습니다. 크기가 다를 수 있습니다. 목록보기를 사용하지 않으면 목록을 어떻게 작성할 수 있습니까? 구현시 일반 목록보기는 기본적으로 스크롤되며 확대보기를 원합니다. –

+0

'NestedScrollView' 안에서'RecyclerView' 사용을 고려 했습니까? http://stackoverflow.com/questions/31000081/how-to-use-recyclerview-inside-nestedscrollview – PPartisan

답변

1

스크롤에서 목록보기를 방지합니다.

이 하자, XML 파일의 이름 (당신이 목록보기 위에 표시 할 요소를 포함) 헤더 부분에 대한 XML 파일을 만듭니다
<LinearLayout 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_movie_detail" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:background="@color/colorWhite" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.netbigs.apps.moviesat.MovieDetail" 
    android:orientation="vertical"> 


<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imView" 
    android:layout_gravity="center" 
    android:layout_marginTop="8dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerVertical="true" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/tvmvname" 
    android:paddingTop="10dp" 
    android:textColor="@color/colorBg" 
    android:textSize="16sp" 
    android:textStyle="normal|bold" 
    android:hint="Movie Name" 
    android:layout_gravity="center" 
    android:textAlignment="center" 
    android:layout_centerVertical="true" 
    android:layout_above="@+id/tvmvdate" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="18dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAlignment="center" 
    android:layout_gravity="center" 
    android:id="@+id/tvmvdate" 
    android:textColor="@color/colorBg" 
    android:hint="Release Date" 
    android:layout_marginBottom="14dp" 
    android:layout_centerHorizontal="true" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/tvmvinfo" 
    android:layout_gravity="center" 
    android:textColor="@color/colorBg" 
    android:textAlignment="center" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" /> 
</LinearLayout> 

현재 레이아웃 만 목록보기를 유지 header.xml

입니다. 목록보기 헤더로

설정 header.xml,

LayoutInflater myinflater = getLayoutInflater(); 
ViewGroup myHeader = (ViewGroup)myinflater.inflate(R.layout.headerlayout, myListView, false); 

// you need to initialize your header xml elements using myHeader 
// tvmvname = (TextView)myHeader.findViewById(R.id.tvmvname); 
//and so on... 
// you can set text and image here or later after initializing those 
myListView.addHeaderView(myHeader, null, false); 

*** 성능 훨씬 더 나은있는 ScrollView

+0

많이 고마워. –

관련 문제