스크롤 뷰 내 레이아웃 하단에보기 추가
따라서 내 레이아웃은 기본적으로 다음과 같습니다.
<ScrollView>
<RelativeLayout>
<BunchOfViews/>
<ImageView android:layout_alignParentBottom="true"/>
</RelativeLayout>
</ScrollView>
내가 가지고있는 ScrollView
레이아웃의 모든 있도록 관계없이 항상 화면의 높이 표시되지 않습니다. 문제는 매우 높은 화면에서도 여전히 ImageView
바닥에 있기를 원한다는 것 입니다. 그러나의 자식은 ScrollView
정의 된 바닥이없는 것 같습니다. 는 View
레이아웃의 상단에 배치됩니다. 이 문제를 어떻게 깔끔하게 해결할 수 있습니까?
나는 같은 문제에 부딪쳤다. 나는 매우 만족스러운 해결책을 찾을 수 없었지만 여기에 내가 한 방법이 있습니다. 다른 사람이 더 나은 방법을 가지고있을 수도 있습니다. 저는 아무것도하지 않는 레이아웃을 추가하는 것을 싫어합니다.
내 해킹은 모든 공간을 차지하고 스크롤 뷰가 화면을 채우도록 강제하는 fill_parent가있는 스크롤 뷰 하단에 더미 선형 레이아웃을 추가하는 것입니다. 그런 다음 선형 레이아웃에 원하는 구성 요소를 추가하십시오.
다음은이 작업을 수행하는 내 레이아웃 중 하나입니다.
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:fillViewport="true" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="15px" >
<!-- bunch of components here -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/spinner"
android:layout_marginTop="5px"
android:gravity="center_horizontal|bottom"
android:paddingTop="2px" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20px"
android:paddingRight="20px"
android:text="Delete" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
동일한 문제가 발생하여이 페이지를 찾았습니다.
http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/
기본적으로 ScrollView android:fillViewport
를 true로 설정하면 자식 뷰가 ScrollView 자체와 동일한 높이로 확장되어 공간을 채울 수 있습니다. 그런 다음 자식 컨트롤 중 하나 layout_height
를 fill_parent
및 layout_weight
로 설정하면 1
해당 컨트롤이 빈 공간을 채우도록 "봄"이됩니다.
ScrollView의 내용이 이미 ScrollView를 채울만큼 충분히 높으면이 android:fillViewport
효과가 없으므로 필요한 경우에만 설정이 시작됩니다.
내 최종 XML은 다음과 유사합니다.
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fillViewport="true">
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content">
<LinearLayout
android:layout_height="fill_parent"
android:layout_weight="1">
<!-- this expands to fill the empty space if needed -->
</LinearLayout>
<!-- this sits at the bottom of the ScrollView,
getting pushed out of view if the ScrollView's
content is tall enough -->
<ImageView
android:layout_height="wrap_content"
android:src="@drawable/footer_image">
</ImageView>
</LinearLayout>
</ScrollView>
linearlayout이 필요하지 않은 것 같습니다. 중요한 것은 fillViewPort입니다. 당신은 그냥 사용할 수 있습니다
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottomParent="true">
이제 상대 레이아웃을 최소한 화면 크기로 지정했습니다.
나를 위해 완벽하게 작동 android : fillViewport = "true"
Joel Malone의 답변 scrollview 내부의 레이아웃 하단에 뷰를 추가하면 그 트릭이 수행됩니다. 내 솔루션은 Space
위젯을 사용 하여 부모 레이아웃 내부의 나머지 높이를 채우는 작업을 수행 한다는 점을 제외하면 거의 동일 합니다. 이렇게 :
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent
android:fillViewport="true"
>
<LinearLayout
android:orientation="vertical"
android:layout_height="wrap_content"
>
<android.support.v4.widget.Space
android:layout_height="match_parent"
android:layout_weight="1"
/>
<ImageView
android:layout_height="wrap_content"
android:src="@drawable/footer_image"
/>
</LinearLayout>
</ScrollView>
주의:
fill_parent
다른 답변에서는 오랫동안 사용되지 않는 것으로 표시됩니다.- Compare to an empty
LinearLayout
to fill the rest of parent layout, I thinkSpace
is much more appropriate(it's designed to do that job.) - Finally, don't forget that important attribute at the beginning of
ScrollView
:android:fillViewport="true"
. They together make this trick.
On your view that you want to be at the bottom use android:gravity="bottom"
This should help you:
<RelativeLayout
android:layout_marginTop="-45dip"
android:padding="0dip"
android:layout_alignParentBottom="true"
android:gravity="bottom|right"
android:background="@android:drawable/bottom_bar"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<Button
android:id="@+id/manual_setup"
android:text="@string/account_setup_basics_manual_setup_action"
android:minWidth="@dimen/button_minWidth"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_marginBottom="-4dip"
android:layout_alignParentLeft="true"
android:layout_centerVertical="false"
/>
<Button
android:id="@+id/next"
android:text="@string/next_action"
android:minWidth="@dimen/button_minWidth"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:drawableRight="@drawable/button_indicator_next"
android:layout_marginBottom="-4dip"
android:layout_alignParentRight="true"
android:layout_centerVertical="false"
/>
</RelativeLayout>
ScrollView view = new ScrollView( this );
ScrollView.LayoutParams lps = new FrameLayout.LayoutParams( FILL_PARENT, FILL_PARENT, Gravity.CENTER );
LinearLayout layout = new LinearLayout( this );
// what ever you want in the Layout
view.addView( layout, lps );
참고URL : https://stackoverflow.com/questions/2417221/adding-view-to-bottom-of-layout-inside-a-scrollview
'Programing' 카테고리의 다른 글
기존 테이블에 자동 증가 ID를 추가 하시겠습니까? (0) | 2020.11.19 |
---|---|
B-tree faster than AVL or RedBlack-Tree? (0) | 2020.11.19 |
iOS 7 또는 6에서 탐색 모음 색상을 변경하는 방법은 무엇입니까? (0) | 2020.11.19 |
네이티브 테이블 'performance_schema'. '???' (0) | 2020.11.19 |
VBA Excel의 진행률 표시 줄 (0) | 2020.11.19 |