Codelab นี้เป็นส่วนหนึ่งของหลักสูตรพื้นฐานเกี่ยวกับ Kotlin ใน Android คุณจะได้รับประโยชน์สูงสุดจากหลักสูตรนี้ หากทํางานผ่าน Codelab ตามลําดับ Codelab ของหลักสูตรทั้งหมดจะแสดงอยู่ในหน้า Landing Page ของ Codelab ของ Android Kotlin Fundamentals
สิ่งที่ควรทราบอยู่แล้ว
- การสร้างแอป Android ขั้นพื้นฐานใน Kotlin
- เรียกใช้แอป Android ในโปรแกรมจําลองหรืออุปกรณ์
- ข้อมูลเบื้องต้นเกี่ยวกับ
LinearLayout
- การสร้างแอปแบบง่ายที่ใช้
LinearLayout
และTextView
สิ่งที่คุณจะได้เรียนรู้
- วิธีทํางานกับ
View
และViewGroup
- วิธีจัดเรียงมุมมองใน
Activity
โดยใช้LinearLayout.
- วิธีใช้
ScrollView
สําหรับแสดงเนื้อหาแบบเลื่อนได้ - วิธีเปลี่ยนระดับการเข้าถึงของ
View
- วิธีสร้างและใช้ทรัพยากรสตริงและมิติข้อมูล
- วิธีสร้างเลย์เอาต์เชิงเส้นโดยใช้เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio'
สิ่งที่คุณจะทํา
- สร้างแอปเกี่ยวกับฉัน
- เพิ่ม
TextView
ลงในเลย์เอาต์เพื่อแสดงชื่อ - เพิ่ม
ImageView.
- เพิ่ม
ScrollView
เพื่อแสดงข้อความที่เลื่อนได้
ในแอป aboutMe คุณสามารถแสดงข้อเท็จจริงที่น่าสนใจเกี่ยวกับตัวคุณเอง หรือปรับแต่งแอปสําหรับเพื่อน สมาชิกในครอบครัว หรือสัตว์เลี้ยง แอปนี้แสดงชื่อ ปุ่มเสร็จสิ้น รูปภาพดาว และข้อความแบบเลื่อนได้บางรายการ
โดยคุณจะสร้างโปรเจ็กต์ "เกี่ยวกับฉัน" ใน Android Studio ในงานนี้
- เปิด Android Studio หากยังไม่ได้เปิด
- หากมีโปรเจ็กต์เปิดอยู่แล้วใน Android Studio ให้เลือก File > New > New Project
- หากยังไม่ได้เปิดโปรเจ็กต์ ให้เลือก + เริ่มโปรเจ็กต์ Android Studio ใหม่ในกล่องโต้ตอบยินดีต้อนรับสู่ Android Studio
- ในกล่องโต้ตอบสร้างโปรเจ็กต์ใหม่ในแท็บโทรศัพท์และแท็บเล็ต ให้เลือกเทมเพลตกิจกรรมที่ว่างเปล่า คลิกถัดไป
- จากนั้นกําหนดพารามิเตอร์ต่อไปนี้แล้วคลิกเสร็จสิ้นในกล่องโต้ตอบสร้างโปรเจ็กต์ใหม่
แอตทริบิวต์ | ค่า |
ชื่อแอปพลิเคชัน | เกี่ยวกับฉัน |
ชื่อบริษัท Android |
|
บันทึกตำแหน่ง | เก็บตําแหน่งเริ่มต้นไว้หรือเปลี่ยนเป็นไดเรกทอรีที่ต้องการ |
ภาษา | Kotlin |
ระดับ API ขั้นต่ํา | API 19: Android 4.4 (KitKat) |
โปรเจ็กต์นี้จะรองรับ Instant App | ไม่เลือกช่องทําเครื่องหมายนี้ |
ใช้อาร์ติแฟกต์ AndroidX | เลือกช่องทําเครื่องหมายนี้ |
Android Studio จะใช้เวลาสักครู่ในการสร้างไฟล์โครงการ
- เรียกใช้แอป คุณจะเห็นสตริง " Hello World" ในหน้าจอว่าง
เทมเพลตกิจกรรมที่ว่างเปล่าจะสร้างกิจกรรมเปล่ารายการเดียวชื่อ Mainactivity.kt
เทมเพลตนี้ยังสร้างไฟล์เลย์เอาต์ชื่อ activity_main.xml
ด้วย ไฟล์เลย์เอาต์มี ConstraintLayout
เป็นรูทของ ViewGroup
และมี TextView
เดียวเป็นเนื้อหา
ในงานนี้ ให้เปลี่ยนราก ViewGroup
ที่สร้างขึ้นเป็น LinearLayout
และยังจัดเรียงองค์ประกอบ UI ในแนวตั้งได้อีกด้วย
ดูกลุ่ม
ViewGroup
คือมุมมองที่อาจมีมุมมองย่อย ซึ่งประกอบด้วยมุมมองและกลุ่มการดูอื่นๆ มุมมองที่ประกอบขึ้นเป็นเลย์เอาต์จะได้รับการจัดระเบียบเป็นลําดับชั้นของมุมมอง โดยมีกลุ่มการดูเป็นรูท
ในกลุ่มข้อมูลพร็อพเพอร์ตี้ LinearLayout
องค์ประกอบ UI จะจัดเรียงในแนวนอนหรือแนวตั้ง
เปลี่ยนเลย์เอาต์รากเพื่อให้ใช้กลุ่มข้อมูลพร็อพเพอร์ตี้ LinearLayout
:
- เลือกแผง Project > Android เปิดไฟล์
activity_main.xml
ในโฟลเดอร์app/res/layout
- เลือกแท็บข้อความ แล้วเปลี่ยนกลุ่มระดับรากจาก
ConstraintLayout
เป็นLinearLayout
- โปรดนํา
TextView
ออก ในองค์ประกอบLinearLayout
ให้เพิ่มแอตทริบิวต์android:orientation
และตั้งค่าเป็นvertical
ก่อน:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
หลัง:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
</LinearLayout>
เครื่องมือแก้ไขเลย์เอาต์เป็นเครื่องมือออกแบบภาพภายใน Android Studio แทนที่จะต้องเขียนโค้ด XML ด้วยตนเองเพื่อสร้างเลย์เอาต์ของแอป คุณสามารถใช้เครื่องมือแก้ไขเลย์เอาต์เพื่อลากองค์ประกอบ UI ไปยังตัวแก้ไขการออกแบบได้
หากต้องการดูเครื่องมือแก้ไขเลย์เอาต์ ให้คลิกแท็บการออกแบบ ภาพหน้าจอด้านล่างแสดงส่วนต่างๆ ของเครื่องมือแก้ไขเลย์เอาต์
ตัวแก้ไขดีไซน์: แสดงภาพเลย์เอาต์ของหน้าจอในมุมมองการออกแบบ มุมมองพิมพ์เขียว หรือทั้ง 2 แบบ ตัวแก้ไขดีไซน์คือส่วนหลักของเครื่องมือแก้ไขเลย์เอาต์
แถบเครื่องมือ: มีปุ่มสําหรับกําหนดค่าลักษณะที่ปรากฏของเลย์เอาต์ในตัวแก้ไขดีไซน์ และเปลี่ยนแอตทริบิวต์เลย์เอาต์บางรายการ ตัวอย่างเช่น หากต้องการเปลี่ยนการแสดงเลย์เอาต์ในตัวแก้ไขดีไซน์ ให้ใช้เมนูแบบเลื่อนลงเลือกพื้นผิวการออกแบบ ดังนี้
- ใช้การออกแบบเพื่อดูตัวอย่างเลย์เอาต์จริง
- ใช้ Blueprint เพื่อดูเฉพาะโครงร่างสําหรับมุมมองแต่ละรายการ
- ใช้การออกแบบ + พิมพ์เขียวเพื่อดูการแสดงผลทั้งสองพร้อมกัน
จานสี: แสดงรายการมุมมองและมุมมองกลุ่มที่สามารถลากลงในเลย์เอาต์หรือในแผงแผนผังคอมโพเนนต์
แอตทริบิวต์: แสดงแอตทริบิวต์สําหรับข้อมูลพร็อพเพอร์ตี้หรือกลุ่มมุมมองที่เลือกในปัจจุบัน หากต้องการสลับระหว่างรายการแอตทริบิวต์ทั้งหมดและแอตทริบิวต์ที่ใช้กันทั่วไป ให้ใช้ไอคอน ที่ด้านบนของแผง
คอมโพเนนต์คอมโพเนนต์: แสดงลําดับชั้นของเลย์เอาต์เป็นแผนผังมุมมอง แผนผังคอมโพเนนต์จะมีประโยชน์เมื่อคุณมีมุมมองขนาดเล็ก ซ่อนอยู่ หรือซ้อนทับกันซึ่งคุณเลือกในตัวแก้ไขดีไซน์ไม่ได้
ขั้นตอนที่ 1: เพิ่ม TextView
- เปิดไฟล์
res/layout/activity_main.xml
หากยังไม่ได้เปิด - เปลี่ยนไปที่แท็บข้อความ และตรวจสอบโค้ด โค้ดมี
LinearLayout
เป็นกลุ่มมุมมองรูท (กลุ่มการดูคือข้อมูลพร็อพเพอร์ตี้ที่มีมุมมองอื่นๆ)LinearLayout
มีแอตทริบิวต์ที่จําเป็นlayout_height
,layout_width
และorientation
ซึ่งเป็นvertical
โดยค่าเริ่มต้น - เปลี่ยนไปที่แท็บการออกแบบเพื่อเปิดเครื่องมือแก้ไขเลย์เอาต์
- ลากมุมมองข้อความจากแผงชุดสีไปยังตัวแก้ไขดีไซน์
- สังเกตแผงแผนผังคอมโพเนนต์ มุมมองข้อความใหม่วางเป็นองค์ประกอบย่อยของกลุ่มมุมมองระดับบนสุด ซึ่งก็คือ
LinearLayout
- เปิดแผงแอตทริบิวต์หากยังไม่ได้เปิด (หากต้องการเปิดแผง ให้ดับเบิลคลิก
TextView
ที่เพิ่งเพิ่มในตัวแก้ไขการออกแบบ) - ตั้งค่าแอตทริบิวต์ต่อไปนี้ในแผงแอตทริบิวต์
แอตทริบิวต์ | ค่า |
ID |
|
ข้อความ | ตั้งชื่อเลย (ช่อง text ใดช่องหนึ่งจะแสดงประแจเพื่อระบุว่าเป็นเนมสเปซของ |
textลักษณะที่ปรากฏขึ้น >ขนาดข้อความ |
|
textShowingance > textColor |
|
textลักษณะที่ปรากฏและข้อความในการจัดข้อความ | ศูนย์ |
ขั้นตอนที่ 2: สร้างทรัพยากรสตริง
ในแผนผังคอมโพเนนต์ TextView,
จะเห็นไอคอนคําเตือน หากต้องการดูข้อความเตือน ให้คลิกไอคอนหรือชี้ไปที่รายการนั้น ดังที่แสดงในภาพหน้าจอด้านล่าง
หากต้องการสร้างคําเตือน ให้สร้างทรัพยากรสตริงดังนี้
- ในแผงแอตทริบิวต์ ให้คลิกจุด 3 จุดข้างแอตทริบิวต์ข้อความที่คุณตั้งไว้เป็นชื่อ เครื่องมือแก้ไขทรัพยากรจะเปิดขึ้น
- ในกล่องโต้ตอบทรัพยากร ให้เลือกเพิ่มทรัพยากรใหม่ > ค่าสตริงใหม่
- ในกล่องโต้ตอบทรัพยากรค่าสตริงใหม่ ให้ตั้งค่าช่องชื่อทรัพยากรเป็น
name
ตั้งค่าช่อง Value value เป็นชื่อของคุณเอง คลิก OK โปรดสังเกตว่าคําเตือนนี้หายไป - เปิดไฟล์
res/values/strings.xml
แล้วมองหาทรัพยากรสตริงที่สร้างใหม่ชื่อname
<string name="name">Aleks Haecky</string>
ขั้นตอนที่ 3: สร้างทรัพยากรมิติข้อมูล
คุณเพิ่งเพิ่มทรัพยากรโดยใช้เครื่องมือแก้ไขทรัพยากร นอกจากนี้ คุณสามารถแยกทรัพยากรในตัวแก้ไขโค้ด XML เพื่อสร้างทรัพยากรใหม่ได้ด้วย:
- ในไฟล์
activity_main.xml
ให้เปลี่ยนเป็นแท็บข้อความ - ในบรรทัด
textSize
คลิกที่หมายเลข (20sp
) และพิมพ์Alt+Enter
(Option+Enter
บน Mac) เลือกแยกทรัพยากรมิติข้อมูลจากเมนูป๊อปอัป - ในกล่องโต้ตอบแยกทรัพยากร ให้ป้อน
text_size
ในช่องชื่อทรัพยากร คลิกตกลง - เปิดไฟล์
res/values/dimens.xml
เพื่อดูโค้ดที่สร้างต่อไปนี้
<dimen name="text_size">20sp</dimen>
- เปิดไฟล์
MainActivity.kt
แล้วมองหาโค้ดต่อไปนี้ที่ส่วนท้ายของฟังก์ชันonCreate()
setContentView(R.layout.activity_main)
ฟังก์ชัน setContentView()
จะเชื่อมต่อไฟล์เลย์เอาต์กับ Activity
ไฟล์ทรัพยากรเลย์เอาต์ที่ระบุคือ R.layout.activity_main
R
เป็นการอ้างอิงไปยังทรัพยากร ชั้นเรียนที่สร้างขึ้นโดยอัตโนมัติจะมีคําจํากัดความสําหรับทรัพยากรทั้งหมดในแอปlayout.activity_main
ระบุว่าทรัพยากรเป็นเลย์เอาต์ชื่อactivity_main
- เรียกใช้แอป ระบบจะแสดง
TextView
พร้อมชื่อของคุณ
เมื่อคุณดูหน้าจอแอป ระบบจะพุชชื่อไปที่ด้านบนของหน้าจอ ดังนั้นคุณจึงเพิ่มระยะห่างจากขอบและมีระยะห่างจากขอบแล้ว
ระยะห่างจากขอบกับขอบ
ระยะห่างจากขอบคือช่องว่างภายในขอบเขตของข้อมูลพร็อพเพอร์ตี้หรือองค์ประกอบ ซึ่งเป็นช่องว่างระหว่างขอบของมุมมองและเนื้อหาในมุมมอง ดังที่แสดงในภาพด้านล่าง
ขนาดที่เห็นได้จะมีระยะห่างจากขอบ ต่อไปนี้คือแอตทริบิวต์ระยะห่างจากขอบที่ใช้กันทั่วไป
android:padding
จะระบุระยะห่างจากขอบทั้ง 4 ด้านของมุมมองandroid:paddingTop
ระบุระยะห่างจากขอบสําหรับขอบด้านบนandroid:paddingBottom
ระบุระยะห่างจากขอบด้านล่างandroid:paddingStart
ระบุระยะห่างจากขอบสําหรับ "starting" ขอบมุมมองandroid:paddingEnd
ระบุระยะห่างจากขอบสําหรับ "ending" ขอบมุมมองandroid:paddingLeft
ระบุระยะห่างจากขอบสําหรับขอบด้านซ้ายandroid:paddingRight
ระบุระยะห่างจากขอบด้านขวา
Margin คือพื้นที่นอกเส้นขอบของมุมมอง #39 ซึ่งเป็นพื้นที่จากขอบของมุมมองถึงระดับบนสุด ดังที่แสดงในภาพด้านบน ต่อไปนี้เป็นแอตทริบิวต์อัตรากําไรที่ใช้กันทั่วไป
android:layout_margin
ระบุอัตรากําไรของทั้ง 4 ด้านของมุมมองandroid:layout_marginBottom
ระบุพื้นที่ว่างนอกด้านล่างของมุมมองนี้android:layout_marginStart
ระบุพื้นที่นอกด้าน "starting" ของมุมมองนี้android:layout_marginEnd
ระบุพื้นที่ว่างที่ส่วนท้ายของมุมมองนี้android:layout_marginLeft
ระบุพื้นที่ทางด้านซ้ายของมุมมองนี้android:layout_marginRight
ระบุพื้นที่ทางด้านขวาของมุมมองนี้
ขั้นตอนที่ 1: เพิ่มระยะห่างจากขอบ
หากต้องการเพิ่มระยะห่างระหว่างชื่อและขอบด้านบนของมุมมองข้อความ name
ให้เพิ่มระยะห่างจากขอบด้านบน
- เปิดไฟล์
activity_main.xml
ในแท็บการออกแบบ - ในโครงสร้างคอมโพเนนต์หรือในตัวแก้ไขดีไซน์ ให้คลิกมุมมองข้อความเพื่อเปิดแผงแอตทริบิวต์
- ที่ด้านบนของแผงแอตทริบิวต์ ให้คลิกไอคอนลูกศรคู่ เพื่อดูแอตทริบิวต์ที่ใช้ได้ทั้งหมด
- ค้นหาระยะห่างจากขอบ ขยายส่วนนั้น แล้วคลิกจุด 3 จุด ... ข้างแอตทริบิวต์ด้านบน กล่องโต้ตอบทรัพยากรจะปรากฏขึ้น
- ในกล่องโต้ตอบทรัพยากร ให้เลือกเพิ่มทรัพยากรใหม่ > ค่า Dimen ใหม่
- ในกล่องโต้ตอบทรัพยากรค่ามิติข้อมูลใหม่ ให้สร้างทรัพยากร
dimen
ใหม่ที่ชื่อว่าsmall_padding
ที่มีค่าเป็น8dp
ตัวย่อของ dp ย่อมาจาก density-indอิสระ หากต้องการให้องค์ประกอบ UI มีขนาดเท่ากันบนหน้าจอที่มีความหนาแน่นต่างกัน ให้ใช้ dp เป็นหน่วยการวัด แต่เมื่อระบุขนาดข้อความ ให้ใช้ sp (พิกเซลที่ปรับขนาดได้) เสมอ - คลิกตกลง
ขั้นตอนที่ 2: เพิ่มขอบ
หากต้องการย้ายมุมมองข้อความ name
ออกจากขอบขององค์ประกอบระดับบนสุด ให้เพิ่มระยะขอบบน
- ในแผงแอตทริบิวต์ ให้ค้นหา "ฟื้นตัว&เครื่องหมายคําพูด เพื่อค้นหา Layout_Margin
- ขยาย Layout_Margin แล้วคลิกจุด 3 จุด ... ข้างแอตทริบิวต์ด้านบน
- สร้างทรัพยากร
dimen
ใหม่ที่ชื่อlayout_margin
แล้วกําหนดให้เป็น16dp
คลิก OK
ขั้นตอนที่ 3: เพิ่มแบบอักษร
หากต้องการให้แบบอักษรของมุมมอง name
สวยงามขึ้น ให้ใช้แบบอักษร Android Roboto แบบอักษรนี้เป็นส่วนหนึ่งของไลบรารีการสนับสนุน และคุณเพิ่มแบบอักษรเป็นทรัพยากร
- ในแผงแอตทริบิวต์ ให้ค้นหา "fontFamily"
- ในช่อง fontFamily ให้คลิกลูกศรแบบเลื่อนลง จากนั้นเลื่อนไปที่ด้านล่างของรายการ แล้วเลือกแบบอักษรเพิ่มเติม
- ในกล่องโต้ตอบ Resources ให้ค้นหา
rob
และเลือก Roboto ในรายการตัวอย่าง ให้เลือกปกติ - เลือกปุ่มตัวเลือกเพิ่มแบบอักษรในโครงการ
- คลิกตกลง
ขณะนี้โฟลเดอร์ res
มีโฟลเดอร์ font
ที่มีไฟล์แบบอักษร roboto.ttf
เพิ่มแอตทริบิวต์ @font/roboto
ไปยัง TextView
แล้ว
ขั้นตอนที่ 4: ดึงรูปแบบ
รูปแบบคือคอลเล็กชันแอตทริบิวต์ที่ระบุลักษณะและรูปแบบของข้อมูลพร็อพเพอร์ตี้ สไตล์ประกอบด้วยสีแบบอักษร ขนาดแบบอักษร สีพื้นหลัง ระยะห่างจากขอบ แอตทริบิวต์ทั่วไป และแอตทริบิวต์อื่นๆ ได้
คุณสามารถดึงการจัดรูปแบบข้อความในมุมมอง name
' ลงในรูปแบบหนึ่ง แล้วนําสไตล์นั้นกลับมาใช้ซ้ําสําหรับจํานวนการดูกี่รายการก็ได้ในแอป การใช้รูปแบบซ้ําจะทําให้แอปมีความสม่ําเสมอเมื่อคุณมีการดูหลายรายการ การใช้รูปแบบยังช่วยให้คุณเก็บแอตทริบิวต์ทั่วไปเหล่านี้ไว้ในที่เดียวได้
- คลิกขวาที่
TextView
ในแผนผังคอมโพเนนต์ แล้วเลือก Rector > Style Style - ในกล่องโต้ตอบแยกสไตล์ Android ให้ล้างช่องทําเครื่องหมาย
layout_width
ช่องทําเครื่องหมายlayout_height
และช่องทําเครื่องหมายtextAlignment
แอตทริบิวต์เหล่านี้มักแตกต่างกันไปตามข้อมูลพร็อพเพอร์ตี้แต่ละรายการ คุณจึงไม่ต้องการให้แอตทริบิวต์เหล่านี้เป็นส่วนหนึ่งของสไตล์ - ป้อน
NameStyle
ในช่องชื่อสไตล์ - คลิกตกลง
- รูปแบบเป็นทรัพยากรได้ด้วย ดังนั้นระบบจะบันทึกสไตล์ไว้ในโฟลเดอร์
res/values/
ในไฟล์styles.xml
เปิดstyles.xml
และตรวจสอบโค้ดที่สร้างขึ้นสําหรับสไตล์NameStyle
ซึ่งจะมีลักษณะคล้ายกับตัวอย่างนี้
<style name="NameStyle">
<item name="android:layout_marginTop">@dimen/layout_margin</item>
<item name="android:fontFamily">@font/roboto</item>
<item name="android:paddingTop">@dimen/small_padding</item>
<item name="android:textColor">@android:color/black</item>
<item name="android:textSize">@dimen/text_size</item>
</style>
- เปิด
activity_main.xml
แล้วเปลี่ยนเป็นแท็บข้อความ โปรดสังเกตว่ามีการใช้รูปแบบที่สร้างขึ้นในมุมมองข้อความเป็นstyle="@style/NameStyle"
- เรียกใช้แอปและดูการเปลี่ยนแปลงของแบบอักษรและระยะห่างจากขอบรอบๆ
TextView
แอป Android ในชีวิตจริงส่วนใหญ่ประกอบด้วยมุมมองต่างๆ ร่วมกันเพื่อแสดงรูปภาพ ข้อความที่แสดง และยอมรับอินพุตจากผู้ใช้ในรูปแบบข้อความหรือเหตุการณ์คลิก ในงานนี้ คุณจะได้เพิ่มมุมมองเพื่อแสดงรูปภาพ
ImageView
คือมุมมองสําหรับแสดงทรัพยากรรูปภาพ ตัวอย่างเช่น ImageView
สามารถแสดงทรัพยากรของ Bitmap
เช่น PNG, JPG, GIF หรือ WebP หรือจะแสดงทรัพยากร Drawable
เช่น ภาพวาดเวกเตอร์
มีแหล่งข้อมูลรูปภาพที่มาพร้อมกับ Android เช่น ไอคอนตัวอย่าง รูปโปรไฟล์ และพื้นหลัง คุณเพิ่มทรัพยากรเหล่านี้ลงในแอปได้
- แสดงไฟล์เลย์เอาต์ในแท็บการออกแบบ จากนั้นลาก ImageView จากแผงชุดสีลงมาด้านล่าง
name_text
ในแผนผังคอมโพเนนต์ กล่องโต้ตอบทรัพยากรจะเปิดขึ้น - เลือกวาดเขียนได้หากยังไม่ได้เลือก
- ขยาย android แล้วเลื่อนแล้วเลือก btn_star_big_on เป็นดาวสีเหลือง
- คลิกตกลง
ระบบจะเพิ่มรูปภาพดาวลงในเลย์เอาต์ด้านล่างชื่อ เนื่องจากคุณมีLinearLayout
แนวตั้ง มุมมองที่คุณเพิ่มจะอยู่ในแนวตั้ง - เปลี่ยนไปที่แท็บข้อความและดูโค้ด
ImageView
ที่สร้างขึ้น ความกว้างจะตั้งค่าเป็นmatch_parent
ดังนั้นมุมมองจะกว้างเท่ากับองค์ประกอบระดับบน มีการตั้งความสูงเป็นwrap_content
มุมมองจึงจะสูงเท่ากับเนื้อหาImageView
อ้างอิงภาพวาดของbtn_star_big_on
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@android:drawable/btn_star_big_on" />
- หากต้องการเปลี่ยนชื่อ
id
ของImageView
ให้คลิกขวาที่"@+id/imageView"
แล้วเลือกเปลี่ยนปัจจัย > เปลี่ยนชื่อ - ในกล่องโต้ตอบเปลี่ยนชื่อ ให้ตั้งค่า
id
เป็น@+id/star_image
คลิกเปลี่ยนโครงสร้าง
- ในแท็บการออกแบบในแผนผังคอมโพเนนต์ ให้คลิกไอคอนคําเตือน ข้าง
star_image
คําเตือนนี้ยังไม่มีcontentDescription
ซึ่งโปรแกรมอ่านหน้าจอใช้เพื่ออธิบายรูปภาพให้กับผู้ใช้ - ในแผงแอตทริบิวต์ ให้คลิกจุด 3 จุด ... ข้างแอตทริบิวต์
contentDescription
กล่องโต้ตอบทรัพยากรจะเปิดขึ้น - ในกล่องโต้ตอบทรัพยากร ให้เลือกเพิ่มทรัพยากรใหม่ > ค่าสตริงใหม่ ตั้งค่าช่องชื่อทรัพยากรเป็น
yellow_star
และตั้งค่าช่องค่าทรัพยากรเป็นYellow star
คลิก OK - ใช้แผงแอตทริบิวต์เพื่อเพิ่มระยะขอบบนของ
16dp
(ซึ่งก็คือ@dimen/layout_margin
) ในyellow_star
เพื่อแยกภาพดาวออกจากชื่อ - เรียกใช้แอป ชื่อและรูปดาวจะแสดงใน UI ของแอป
ScrollView
คือกลุ่มข้อมูลพร็อพเพอร์ตี้ที่ช่วยให้ระบบเลื่อนลําดับชั้นของมุมมองที่อยู่ในค่าดังกล่าวได้ มุมมองการเลื่อนสามารถมีมุมมองอื่นได้เพียง 1 มุมมอง หรือดูเป็นกลุ่มย่อยก็ได้ มุมมองย่อยมักเป็น LinearLayout
คุณสามารถเพิ่มมุมมองอื่นๆ ภายใน LinearLayout
รูปภาพต่อไปนี้แสดงตัวอย่างของ ScrollView
ที่มี LinearLayout
ซึ่งมีข้อมูลพร็อพเพอร์ตี้อื่นๆ หลายรายการ
ในงานนี้ คุณจะได้เพิ่ม ScrollView
ที่อนุญาตให้ผู้ใช้เลื่อนมุมมองข้อความที่แสดงประวัติสั้นๆ หากต้องการเลื่อนข้อมูลพร็อพเพอร์ตี้เพียง 1 รายการ ก็เพิ่มข้อมูลพร็อพเพอร์ตี้ลงใน ScrollView
ได้โดยตรง ซึ่งสิ่งที่ทําในขั้นตอนนี้
ขั้นตอนที่ 1: เพิ่ม ScrollView ที่มี TextView
- เปิดไฟล์
activity_main.xml
ในแท็บการออกแบบ - ลากมุมมองการเลื่อนลงในเลย์เอาต์โดยลากลงในตัวแก้ไขดีไซน์หรือในแผนผังคอมโพเนนต์ วางมุมมองการเลื่อนใต้รูปภาพดาว
- เปลี่ยนไปที่แท็บข้อความเพื่อตรวจสอบโค้ดที่สร้างขึ้น
// Auto generated code
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</ScrollView>
ความสูงและความกว้างของ ScrollView
จะตรงกับองค์ประกอบระดับบนสุด เมื่อมุมมองข้อความ name_text
และมุมมองภาพ star_image
ใช้พื้นที่แนวตั้งเพียงพอที่จะแสดงเนื้อหาของตัวเอง ระบบ Android จะวาง ScrollView
เพื่อเติมพื้นที่ว่างที่เหลือบนหน้าจอ
- เพิ่ม
id
ไปยังScrollView
และตั้งชื่อว่าbio_scroll
การเพิ่มid
ลงในScrollView
จะทําให้ระบบของ Android แฮนเดิลสําหรับมุมมอง ซึ่งเมื่อผู้ใช้หมุนอุปกรณ์ ระบบจะคงตําแหน่งการเลื่อนไว้ - ภายใน
ScrollView
ให้นําโค้ดLinearLayout
ออกเพราะแอปจะดูข้อมูลได้เพียง 1 รายการที่เลื่อนได้ นั่นคือTextView
- ลาก
TextView
จากจานสีไปยังแผนผังคอมโพเนนต์ วางTextView
ใต้bio_scroll
เป็นองค์ประกอบย่อยของbio_scroll
- ตั้งค่า id ของมุมมองข้อความใหม่เป็น
bio_text
- ถัดไป คุณสามารถเพิ่มสไตล์ของมุมมองข้อความใหม่ ในแผงแอตทริบิวต์ ให้คลิกจุด 3 จุด ... ข้างแอตทริบิวต์รูปแบบเพื่อเปิดกล่องโต้ตอบทรัพยากร
- ในกล่องโต้ตอบ Resources ให้ค้นหา
NameStyle
เลือกNameStyle
จากรายการ แล้วคลิกตกลง มุมมองข้อความจะใช้รูปแบบNameStyle
ที่คุณสร้างในงานก่อนหน้า
ขั้นตอนที่ 2: เพิ่มชีวประวัติใน TextView ใหม่
- เปิด
strings.xml
สร้างทรัพยากรสตริงชื่อbio
และใส่ข้อความสั้นๆ เกี่ยวกับตัวคุณ หรืออะไรก็ได้ที่ต้องการ
ตัวอย่างชีวประวัติมีดังนี้
<string name="bio">Hi, my name is Aleks.
\n\nI love fish.
\n\nThe kind that is alive and swims around in an aquarium or river, or a lake, and definitely the ocean.
\nFun fact is that I have several aquariums and also a river.
\n\nI like eating fish, too. Raw fish. Grilled fish. Smoked fish. Poached fish - not so much.
\nAnd sometimes I even go fishing.
\nAnd even less sometimes, I actually catch something.
\n\nOnce, when I was camping in Canada, and very hungry, I even caught a large salmon with my hands.
\n\nI\'ll be happy to teach you how to make your own aquarium.
\nYou should ask someone else about fishing, though.\n\n</string>
- ในมุมมองข้อความ
bio_text
ให้กําหนดค่าของแอตทริบิวต์text
เป็นทรัพยากรสตริงbio
ที่มีชีวประวัติ - เพื่อให้ข้อความ
bio_text
อ่านได้ง่ายขึ้น ให้เพิ่มระยะห่างระหว่างบรรทัด ใช้แอตทริบิวต์lineSpacingMultiplier
และระบุค่าเป็น1.2
สังเกตว่าในตัวแก้ไขดีไซน์จะใช้ข้อความbio
ไปจนถึงขอบด้านข้างของหน้าจอ หากต้องการแก้ไขปัญหานี้ คุณสามารถเพิ่มแอตทริบิวต์ด้านซ้าย เริ่มต้น ด้านขวา และสิ้นสุดระยะห่างจากขอบไปยังรากLinearLayout
ทั้งนี้ คุณไม่จําเป็นต้องเพิ่มระยะห่างจากขอบล่างเนื่องจากข้อความที่ย้ายไปถึงสัญญาณด้านล่างถึงผู้ใช้ว่าเลื่อนข้อความได้ - เพิ่มระยะห่างจากขอบเริ่มต้นและจุดสิ้นสุดของ
16dp
ในรูทLinearLayout
- เปลี่ยนไปที่แท็บข้อความ ดึงข้อมูลทรัพยากรมิติข้อมูล และตั้งชื่อเป็น
layout_padding
- เรียกใช้แอปและเลื่อนดูข้อความ
ยินดีด้วย
คุณได้สร้างแอปที่สมบูรณ์ตั้งแต่ต้นแล้ว และมันดูดีมากเลย
โปรเจ็กต์ Android Studio: AboutMe
ใน ScrollView
ให้เพิ่ม ImageView
เหนือ TextView
เมื่อคุณเรียกใช้แอป ภาพนี้จะแตกต่างจากดาวที่จะเลื่อนออกจากมุมมองในขณะที่ข้อความเลื่อนขึ้น
คําแนะนํา: มุมมองการเลื่อนมีมุมมองย่อยได้เพียง 1 รายการเท่านั้น คุณต้องรวมมุมมองที่เลื่อนได้ 2 มุมมอง ได้แก่ ImageView
และ TextView
ลงใน LinearLayout
ViewGroup
คือมุมมองที่อาจมีมุมมองอื่นๆLinearLayout
และScrollView
เป็นกลุ่มการดูLinearLayout
คือกลุ่มข้อมูลพร็อพเพอร์ตี้ที่จัดการมุมมองของบุตรหลานในแนวนอนหรือแนวตั้ง- ใช้
ScrollView
เมื่อคุณต้องการแสดงเนื้อหาบนหน้าจอ เช่น ข้อความขนาดยาวหรือคอลเล็กชันรูปภาพ มุมมองการเลื่อนมีมุมมองย่อยได้เพียงข้อมูลเดียว หากต้องการเลื่อนข้อมูลพร็อพเพอร์ตี้มากกว่า 1 รายการ ให้เพิ่มViewGroup
เช่นLinearLayout
ลงในScrollView
และใส่ข้อมูลพร็อพเพอร์ตี้ที่ต้องการเลื่อนดูภายในViewGroup
- เครื่องมือแก้ไขเลย์เอาต์เป็นตัวแก้ไขดีไซน์ภาพภายใน Android Studio คุณใช้ตัวแก้ไขเลย์เอาต์เพื่อสร้างเลย์เอาต์ของแอปได้โดยลากองค์ประกอบ UI ลงในเลย์เอาต์
- รูปแบบคือคอลเล็กชันของแอตทริบิวต์ที่ระบุลักษณะที่ปรากฏของข้อมูลพร็อพเพอร์ตี้ ตัวอย่างเช่น รูปแบบสามารถระบุสีแบบอักษร ขนาดแบบอักษร สีพื้นหลัง ระยะห่างจากขอบ และขอบ
- คุณสามารถดึงและรวบรวมการจัดรูปแบบทั้งหมดของมุมมองให้เป็นรูปแบบได้ หากต้องการให้แอปมีรูปลักษณ์ที่สอดคล้องกัน ให้ใช้รูปแบบที่มีมุมมองอื่นๆ ซ้ํา
หลักสูตร Udacity:
เอกสารประกอบสําหรับนักพัฒนาซอฟต์แวร์ Android
ส่วนนี้จะอธิบายการบ้านและรายงานสําหรับนักเรียนที่ทํางานผ่าน Codelab นี้ซึ่งเป็นส่วนหนึ่งของหลักสูตรที่นําโดยผู้สอน สิ่งที่ผู้สอนต้องทํามีดังนี้
- มอบหมายการบ้านหากจําเป็น
- สื่อสารกับนักเรียนเกี่ยวกับวิธีส่งงานทําการบ้าน
- ตัดเกรดการบ้าน
ผู้สอนจะใช้คําแนะนําเหล่านี้เท่าใดก็ได้หรือตามที่ต้องการก็ได้ และสามารถกําหนดให้การบ้านอื่นๆ ที่ตนคิดว่าเหมาะสมได้
หากคุณใช้ Codelab ด้วยตัวเอง ก็ให้ใช้การบ้านเพื่อทดสอบความรู้ของคุณได้
ตอบคําถามเหล่านี้
คำถามที่ 1
ข้อใดต่อไปนี้เป็นกลุ่มการดู
▢ EditText
▢ LinearLayout
▢ TextView
▢ Button
คำถามที่ 2
ลําดับชั้นของการดูใดต่อไปนี้ไม่ถูกต้อง
▢ LinearLayout
> TextView
, TextView
, ImageView
▢ ScrollView
> LinearLayout
> TextView
, Button
, Button
, ScrollView
> TextView
▢ TextView
> TextView
, ImageView
, ScrollView
คำถามที่ 3
รูปแบบคือทรัพยากรที่กําหนดไว้ใน styles.xml
คุณสามารถใช้รูปแบบเพื่อกําหนดสี แบบอักษร ขนาดข้อความ และลักษณะอื่นๆ ของข้อมูลพร็อพเพอร์ตี้ได้ จริงหรือเท็จ
▢ จริง
▢ เท็จ
คำถามที่ 4
ScrollView
คือกลุ่มการดูที่อาจประกอบด้วยยอดดูกี่กลุ่มก็ได้ จริงหรือเท็จ
▢ จริง
▢ เท็จ
คำถามที่ 5
องค์ประกอบใดของ UI ที่ใช้แสดงรูปภาพในแอปได้
▢ TextView
▢ ImageView
▢ Button
▢ ScrollView
เริ่มบทเรียนถัดไป:
สําหรับลิงก์ไปยัง Codelab อื่นๆ ในหลักสูตรนี้ โปรดดูหน้า Landing Page ของ Codelab ของ Android Kotlin Fundamentals