2014-08-27 2 views
0

내부에 여러 다른보기가있는 scrollview가 있습니다. 내가 원하는 것은 scrollview의 모든 요소가 마지막 요소를 제외하고 전체 화면을 채우는 것입니다. 사용자는 아래로 스크롤하여 스크롤보기에서 마지막 항목을 나타낼 수 있습니다. 마지막 항목이 다른 어떤 경우에도 표시되는 것을 원하지 않습니다.Android ScrollView - 항상 화면 크기보다 커야합니다.

내 XML은 다음과 같습니다

이 현재 완전히 전체 화면을 채울 수있다 않지만, 마지막 항목이 밀어없는 무엇
<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="3.45" 
    android:fillViewport="true"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical"> 
     <View 1 ... android:weight="2.25" /> 
     <View 2 ... android:weight="0.8" /> 
     <View 3 ... android:weight="0.40" /> //last item 
    </LinearLayout> 
</ScrollView> 

.

+0

당신에게 지금 당신은 화면을 채울 수있는 LinearLayout의 높이를 확장 할 필요가 두 개의 첫 번째 뷰의 높이를 동적으로 설정하고 장치 높이를 가져오고 처음에는 50 %, 두 번째에는 50 %로 설정할 수 있습니다. 그러나이 방법을 다른 방법으로 사용하는 것이 좋습니다. – MHP

+0

'fill_parent'와'match_parent'를 섞지 마십시오. 귀하의 코드입니다. 'fill_parent'는 더 이상 사용되지 않아야합니다. –

+0

@AlexanderZhak –

답변

2

마지막 게시물 (이제 삭제됨)에 따라 마지막 항목을 LinearLayout 그룹 외부에 배치하거나 다른 LinearLayout에 배치해야합니다. 이 될 것 떨어지게

<ScrollView 
    android:layout_width="match_parent"<!-- added--> 
    android:layout_height="match_parent"><!-- added--> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:oriention="vertical"><!-- added--> 
     <LinearLayout 
      android:id="@+id/visible_items" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"><!-- changed--> 
      ...{items} 
     </LinearLayout> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 
      {last item} 
     </LinearLayout> 
    </LinearLayout> 
<ScrollView> 

UPDATE 같은 :

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
     Display display = wm.getDefaultDisplay(); 
final Point point = new Point(); 
    try { 
     display.getSize(point); 
    } catch (java.lang.NoSuchMethodError ignore) { // Older device 
     point.x = display.getWidth(); 
     point.y = display.getHeight(); 
    } 

LinearLayout layout = (LinearLayout) findViewById(R.id.visible_items); 
LayoutParams lp = layout.getLayoutParams(); 
lp.height = point.y; 
layout.setLayoutParams(lp); 

참고 : onWindowFocusChanged 코드 위에 넣을() 활동의 Methos는

+0

이것은 매력처럼 작동했지만, (내 상황에서는) 몇 가지 더 할 일이 필요했습니다. 나는 행동 바 (scrollbar)와 정적 바닥 글 (footer)을 화면 하단에 있으며 항상 볼 수있다. 그래서, 저는 이렇게했습니다 :'lp.height = point.y - getActionBar(). getHeight() - statusbarHeight;' –

+0

행복하게 도와주세요 :) – MHP

관련 문제