ผมคิดว่าเป็นทางออกที่สง่างามมากขึ้นจะใช้ScrollView
ของandroid:fillViewport
สถานที่ให้บริการ A ScrollView
นั้นแตกต่างกันเล็กน้อยในการปฏิบัติต่อมุมมองเนื้อหา (สามารถมีได้เพียงอันเดียว) แม้ว่าคุณจะตั้งค่าmatch_parent
( fill_parent
) ให้ScrollView
มันจะไม่ให้ระยะห่างกับมุมมองเนื้อหามากขนาดนั้น แต่พฤติกรรมเริ่มต้นคือการScrollView
รวม เนื้อหาโดยไม่คำนึงถึงสิ่งที่คุณระบุสำหรับมุมมองนั้น สิ่งที่android:fillViewport
บอกScrollView
ให้ยืดเนื้อหาเพื่อเติมวิวพอร์ต ( http://developer.android.com/reference/android/widget/ScrollView.html#attr_android:fillViewport ) ดังนั้นในกรณีนี้ไฟล์LinearLayout
จะยืดออกเพื่อให้ตรงกับวิวพอร์ตและถ้าความสูงไปด้านหลังวิวพอร์ตก็จะเลื่อนได้ซึ่งตรงกับที่คุณต้องการ!
คำตอบที่ยอมรับจะทำงานไม่ถูกต้องเมื่อเนื้อหาขยายออกไปScrollView
เพราะจะยังคงอยู่กึ่งกลางของมุมมองเนื้อหาก่อนทำให้ตัดส่วนหนึ่งของมุมมองออกไปและScrollView
จุดศูนย์กลางในเค้าโครงอื่นใช้งานได้ แต่ไม่รู้สึกถูกต้องนอกจากนี้ ฉันคิดว่ามันจะส่งผลให้เกิดข้อผิดพลาดของผ้าสำลี (พ่อแม่ที่ไร้ประโยชน์หรืออะไรบางอย่างตามแนวเหล่านั้น)
ลองทำสิ่งนี้:
<ScrollView
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingTop="12dp"
android:paddingBottom="20dp"
android:scrollbarStyle="outsideOverlay"
android:fillViewport="true">
<LinearLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="check" />
</LinearLayout>
</ScrollView>
เพียงจำไว้ว่าเหตุผลที่มันมาอยู่ตรงกลางที่นี่ตอนนี้เป็นเพราะandroid:gravity
จุดLinearLayout
เริ่มต้นที่ScrollView
จะยืดออกLinearLayout
เพื่อให้ทราบว่าขึ้นอยู่กับสิ่งที่คุณเพิ่มในรูปแบบ
อีกหนึ่งการอ่านที่ดีScrollView
แม้ว่าจะไม่เกี่ยวกับการอยู่ตรงกลาง แต่เกี่ยวกับfillViewport
คือhttp://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/