Codelab นี้เป็นส่วนหนึ่งของหลักสูตรหลักพื้นฐานของ Android Kotlin คุณจะได้รับประโยชน์สูงสุดจากหลักสูตรนี้หากทำตาม Codelab ตามลำดับ Codelab ของหลักสูตรทั้งหมดแสดงอยู่ในหน้า Landing Page ของ Codelab หลักพื้นฐานของ Android Kotlin
สิ่งที่คุณควรทราบอยู่แล้ว
- การสร้างแอป Android พื้นฐานใน Kotlin
- การเรียกใช้แอป Android ในโปรแกรมจำลองหรือในอุปกรณ์
- ข้อมูลพื้นฐานเกี่ยวกับ
LinearLayout - การสร้างแอปง่ายๆ ที่ใช้
LinearLayoutและTextView
สิ่งที่คุณจะได้เรียนรู้
- วิธีทำงานกับ
ViewและViewGroup - วิธีจัดเรียงมุมมองใน
Activityโดยใช้LinearLayout. - วิธีใช้
ScrollViewเพื่อแสดงเนื้อหาที่เลื่อนได้ - วิธีเปลี่ยนระดับการมองเห็นของ
View - วิธีสร้างและใช้ทรัพยากรสตริงและมิติข้อมูล
- วิธีสร้างเลย์เอาต์เชิงเส้นโดยใช้เครื่องมือแก้ไขเลย์เอาต์ของ Android Studio
สิ่งที่คุณต้องดำเนินการ
- สร้างแอป AboutMe
- เพิ่ม
TextViewลงในเลย์เอาต์เพื่อแสดงชื่อ - เพิ่ม
ImageView. - เพิ่ม
ScrollViewเพื่อแสดงข้อความที่เลื่อนได้
ในแอป AboutMe คุณสามารถแสดงข้อเท็จจริงที่น่าสนใจเกี่ยวกับตัวคุณเอง หรือปรับแต่งแอปให้เพื่อน สมาชิกในครอบครัว หรือสัตว์เลี้ยงได้ แอปนี้แสดงชื่อ ปุ่มเสร็จสิ้น รูปดาว และข้อความที่เลื่อนได้

ในงานนี้ คุณจะสร้างโปรเจ็กต์ AboutMe ใน Android Studio
- เปิด Android Studio หากยังไม่ได้เปิด
- หากเปิดโปรเจ็กต์ใน Android Studio อยู่แล้ว ให้เลือกไฟล์ > ใหม่ > โปรเจ็กต์ใหม่

- หากยังไม่ได้เปิดโปรเจ็กต์ ให้เลือก + เริ่มโปรเจ็กต์ Android Studio ใหม่ในกล่องโต้ตอบยินดีต้อนรับสู่ Android Studio

- ในกล่องโต้ตอบสร้างโปรเจ็กต์ใหม่ ในแท็บโทรศัพท์และแท็บเล็ต ให้เลือกเทมเพลตกิจกรรมว่าง คลิกถัดไป

- ในกล่องโต้ตอบสร้างโปรเจ็กต์ใหม่ถัดไป ให้ตั้งค่าพารามิเตอร์ต่อไปนี้ แล้วคลิกเสร็จสิ้น
แอตทริบิวต์ | ค่า |
ชื่อแอปพลิเคชัน | AboutMe |
ชื่อบริษัท Android |
|
บันทึกตำแหน่ง | ปล่อยให้เป็นตำแหน่งเริ่มต้นหรือเปลี่ยนเป็นไดเรกทอรีที่ต้องการ |
ภาษา | Kotlin |
ระดับ API ขั้นต่ำ | API 19: Android 4.4 (KitKat) |
โปรเจ็กต์นี้จะรองรับแอปด่วน | ยกเลิกการเลือกช่องทำเครื่องหมายนี้ |
ใช้ Artifact ของ AndroidX | เลือกช่องทำเครื่องหมายนี้ |

Android Studio จะใช้เวลาสักครู่ในการสร้างไฟล์โปรเจ็กต์
- เรียกใช้แอป คุณจะเห็นสตริง "Hello World" บนหน้าจอว่าง

เทมเพลตกิจกรรมเปล่าจะสร้างกิจกรรมเปล่ารายการเดียว Mainactivity.kt นอกจากนี้ เทมเพลตยังสร้างไฟล์เลย์เอาต์ชื่อ activity_main.xml ด้วย ไฟล์เลย์เอาต์มี ConstraintLayout เป็น ViewGroup รูท และมี TextView รายการเดียวเป็นเนื้อหา
ในงานนี้ คุณจะเปลี่ยนรูทที่สร้างขึ้น ViewGroup เป็น LinearLayout นอกจากนี้ คุณยังจัดเรียงองค์ประกอบ UI ในแนวตั้งได้ด้วย
ดูกลุ่ม
ViewGroup คือ View ที่มี View ย่อย ซึ่งเป็น View และกลุ่ม View อื่นๆ มุมมองที่ประกอบกันเป็นเลย์เอาต์จะได้รับการจัดระเบียบเป็นลำดับชั้นของมุมมองโดยมีกลุ่มมุมมองเป็นรูท
ในLinearLayoutกลุ่มมุมมอง องค์ประกอบ UI จะจัดเรียงในแนวนอนหรือแนวตั้ง

เปลี่ยนเลย์เอาต์รากเพื่อให้ใช้กลุ่มมุมมอง LinearLayout
- เลือกแผงโปรเจ็กต์ > 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 คุณสามารถใช้เครื่องมือแก้ไขเลย์เอาต์เพื่อลากองค์ประกอบ UI ไปยังเครื่องมือแก้ไขดีไซน์แทนการเขียนโค้ด XML ด้วยตนเองเพื่อสร้างเลย์เอาต์ของแอป
หากต้องการดูเครื่องมือแก้ไขเลย์เอาต์ ให้คลิกแท็บออกแบบ ภาพหน้าจอด้านล่างแสดงส่วนต่างๆ ของเครื่องมือแก้ไขเลย์เอาต์

ตัวแก้ไขดีไซน์: แสดงภาพเลย์เอาต์หน้าจอในมุมมองดีไซน์ มุมมองพิมพ์เขียว หรือทั้ง 2 อย่าง เครื่องมือแก้ไขการออกแบบเป็นส่วนหลักของเครื่องมือแก้ไขเลย์เอาต์
แถบเครื่องมือ: มีปุ่มสำหรับกำหนดค่าลักษณะที่ปรากฏของเลย์เอาต์ในเครื่องมือแก้ไขการออกแบบ และเปลี่ยนแอตทริบิวต์เลย์เอาต์บางอย่าง เช่น หากต้องการเปลี่ยนการแสดงผลเลย์เอาต์ในเครื่องมือแก้ไขการออกแบบ ให้ใช้เมนูแบบเลื่อนลงเลือกพื้นผิวการออกแบบ 
- ใช้ ออกแบบเพื่อดูตัวอย่างเลย์เอาต์ในสภาพแวดล้อมจริง
- ใช้ Blueprint เพื่อดูเฉพาะโครงร่างของแต่ละมุมมอง
- ใช้การออกแบบ + บลูปรินต์เพื่อดูจอแสดงผลทั้ง 2 จอแบบเคียงข้างกัน
จานสี: แสดงรายการมุมมองและกลุ่มมุมมองที่คุณลากไปยังเลย์เอาต์หรือแผงโครงสร้างคอมโพเนนต์ได้
แอตทริบิวต์: แสดงแอตทริบิวต์สําหรับมุมมองหรือกลุ่มมุมมองที่เลือกในปัจจุบัน หากต้องการสลับระหว่างรายการแอตทริบิวต์ทั้งหมดกับแอตทริบิวต์ที่ใช้กันโดยทั่วไป ให้ใช้ไอคอน
ที่ด้านบนของแผง
แผนผังคอมโพเนนต์: แสดงลำดับชั้นของเลย์เอาต์เป็นโครงสร้างแบบต้นไม้ของมุมมอง แผนผังคอมโพเนนต์มีประโยชน์เมื่อคุณมีมุมมองขนาดเล็ก ซ่อนอยู่ หรือซ้อนทับกัน ซึ่งคุณเลือกในเครื่องมือแก้ไขการออกแบบไม่ได้
ขั้นตอนที่ 1: เพิ่ม TextView
- เปิดไฟล์
res/layout/activity_main.xmlหากยังไม่ได้เปิด - สลับไปที่แท็บข้อความ
แล้วตรวจสอบโค้ด โค้ดมี LinearLayoutเป็นกลุ่มมุมมองราก (มุมมองกลุ่ม คือมุมมองที่มีมุมมองอื่นๆ)
LinearLayoutมีแอตทริบิวต์ที่จำเป็นlayout_height,layout_widthและorientationซึ่งเป็นverticalโดยค่าเริ่มต้น - เปลี่ยนไปที่แท็บดีไซน์เพื่อเปิดเครื่องมือแก้ไขเลย์เอาต์
- ลากมุมมองข้อความจากแผงจานสีไปยังโปรแกรมแก้ไขการออกแบบ

- สังเกตบานหน้าต่างแผนผังคอมโพเนนต์ ระบบจะวางมุมมองข้อความใหม่เป็นองค์ประกอบย่อยของกลุ่มมุมมองหลัก ซึ่งก็คือ
LinearLayout
- เปิดบานหน้าต่างแอตทริบิวต์ หากยังไม่ได้เปิด (หากต้องการเปิดแผง ให้ดับเบิลคลิก
TextViewที่เพิ่มใหม่ในเครื่องมือแก้ไขการออกแบบ) - ตั้งค่าแอตทริบิวต์ต่อไปนี้ในแผงแอตทริบิวต์
แอตทริบิวต์ | ค่า |
รหัส |
|
ข้อความ | ตั้งค่าเป็นชื่อของคุณ (ฟิลด์ข้อความช่องใดช่องหนึ่งจะแสดงไอคอนประแจเพื่อระบุว่าเป็นของเนมสเปซ |
textAppearance > textSize |
|
textAppearance > textColor |
|
textAppearance > textAlignment | กึ่งกลาง |
ขั้นตอนที่ 2: สร้างทรัพยากรสตริง
ในแผนผังคอมโพเนนต์ คุณจะเห็นไอคอนคำเตือน
ข้าง TextView, หากต้องการดูข้อความคำเตือน ให้คลิกหรือชี้ไปที่ไอคอนตามที่แสดงในภาพหน้าจอด้านล่าง

หากต้องการแก้ไขคำเตือน ให้สร้างทรัพยากรสตริงโดยทำดังนี้
- ในแผงแอตทริบิวต์ ให้คลิกจุด 3 จุดข้างแอตทริบิวต์ข้อความที่คุณตั้งค่าเป็นชื่อ เครื่องมือแก้ไขทรัพยากรจะเปิดขึ้น

- ในกล่องโต้ตอบทรัพยากร ให้เลือกเพิ่มทรัพยากรใหม่ > ค่าสตริงใหม่
- ในกล่องโต้ตอบแหล่งข้อมูลค่าสตริงใหม่ ให้ตั้งค่าช่องชื่อแหล่งข้อมูลเป็น
nameตั้งค่าช่องค่าทรัพยากรเป็นชื่อของคุณเอง คลิกตกลง โปรดสังเกตว่าคำเตือนหายไปแล้ว
- เปิดไฟล์
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พร้อมชื่อของคุณ
เมื่อดูที่หน้าจอแอป ชื่อของคุณจะอยู่ชิดขอบด้านบนของหน้าจอ ดังนั้นตอนนี้คุณจึงต้องเพิ่มระยะห่างภายในและระยะขอบ
ระยะห่างจากขอบเทียบกับระยะขอบ
ระยะห่างจากขอบคือพื้นที่ภายในขอบเขตของมุมมองหรือองค์ประกอบ ซึ่งเป็นพื้นที่ระหว่างขอบของวิวกับเนื้อหาของวิว ดังที่แสดงในรูปด้านล่าง

ขนาดของ View จะรวมระยะห่างจากขอบ แอตทริบิวต์ระยะขอบที่ใช้กันโดยทั่วไปมีดังนี้
android:paddingระบุระยะขอบสำหรับขอบทั้ง 4 ด้านของมุมมองandroid:paddingTopระบุระยะขอบบนandroid:paddingBottomระบุระยะขอบสำหรับขอบด้านล่างandroid:paddingStartระบุระยะขอบสำหรับขอบ "เริ่มต้น" ของมุมมองandroid:paddingEndระบุระยะขอบสำหรับขอบ "สิ้นสุด" ของมุมมองandroid:paddingLeftระบุระยะขอบสำหรับขอบด้านซ้ายandroid:paddingRightระบุระยะขอบสำหรับขอบด้านขวา
ขอบคือพื้นที่ที่เพิ่มไว้นอกเส้นขอบของวิว ซึ่งเป็นพื้นที่จากขอบของมุมมองไปยังองค์ประกอบหลัก ดังที่แสดงในรูปด้านบน แอตทริบิวต์ระยะขอบที่ใช้กันโดยทั่วไปมีดังนี้
android:layout_marginระบุขอบสำหรับทั้ง 4 ด้านของมุมมองandroid:layout_marginBottomระบุช่องว่างด้านนอกด้านล่างของมุมมองนี้android:layout_marginStartระบุช่องว่างนอกด้าน "เริ่มต้น" ของมุมมองนี้android:layout_marginEndระบุช่องว่างที่ด้านท้ายของมุมมองนี้android:layout_marginLeftระบุช่องว่างทางด้านซ้ายของมุมมองนี้android:layout_marginRightระบุพื้นที่ทางด้านขวาของมุมมองนี้
ขั้นตอนที่ 1: เพิ่มระยะขอบ
หากต้องการเว้นที่ว่างระหว่างชื่อกับขอบด้านบนของnameมุมมองข้อความ ให้เพิ่มระยะห่างจากขอบด้านบน
- เปิด
activity_main.xmlไฟล์ในแท็บออกแบบ - ในแผนผังคอมโพเนนต์หรือในเครื่องมือแก้ไขการออกแบบ ให้คลิกมุมมองข้อความเพื่อเปิดแผงแอตทริบิวต์
- ที่ด้านบนของแผงแอตทริบิวต์ ให้คลิกไอคอนลูกศรคู่
เพื่อดูแอตทริบิวต์ทั้งหมดที่ใช้ได้ - ค้นหาการเว้นวรรค ขยาย และคลิกจุด 3 จุด ... ข้างแอตทริบิวต์ด้านบน กล่องโต้ตอบแหล่งข้อมูลจะปรากฏขึ้น
- ในกล่องโต้ตอบทรัพยากร ให้เลือกเพิ่มทรัพยากรใหม่ > ค่าใหม่สำหรับมิติข้อมูล
- ในกล่องโต้ตอบแหล่งข้อมูลค่ามิติข้อมูลใหม่ ให้สร้างแหล่งข้อมูล
dimenใหม่ชื่อsmall_paddingที่มีค่าเป็น8dp
ตัวย่อ dp ย่อมาจากอิสระจากความหนาแน่น หากต้องการให้องค์ประกอบ UI มีขนาดเท่ากันในหน้าจอที่มีความหนาแน่นต่างกัน ให้ใช้ dp เป็นหน่วยวัด แต่เมื่อระบุขนาดข้อความ ให้ใช้ sp (พิกเซลที่รองรับการปรับขนาด) เสมอ - คลิกตกลง
ขั้นตอนที่ 2: เพิ่มขอบ
หากต้องการย้ายnameมุมมองข้อความออกจากขอบขององค์ประกอบระดับบนสุด ให้เพิ่มระยะขอบด้านบน
- ในบานหน้าต่างแอตทริบิวต์ ให้ค้นหา "margin" เพื่อหา Layout_Margin
- ขยาย Layout_Margin แล้วคลิกจุด 3 จุด ... ข้างแอตทริบิวต์ top
- สร้าง
dimenทรัพยากรใหม่ชื่อlayout_marginและทําให้เป็น16dpคลิกตกลง
ขั้นตอนที่ 3: เพิ่มแบบอักษร
หากต้องการให้nameมุมมองข้อความดูดีขึ้น ให้ใช้แบบอักษร Roboto ของ Android แบบอักษรนี้เป็นส่วนหนึ่งของไลบรารีการสนับสนุน และคุณจะเพิ่มแบบอักษรเป็นทรัพยากร
- ในแผงแอตทริบิวต์ ให้ค้นหา "fontFamily"
- ในช่อง fontFamily ให้คลิกลูกศรแบบเลื่อนลง เลื่อนไปที่ด้านล่างของรายการ แล้วเลือกแบบอักษรเพิ่มเติม
- ในกล่องโต้ตอบแหล่งข้อมูล ให้ค้นหา
robแล้วเลือก Roboto ในรายการแสดงตัวอย่าง ให้เลือกปกติ - เลือกปุ่มตัวเลือก เพิ่มแบบอักษรลงในโปรเจ็กต์
- คลิกตกลง

ตอนนี้โฟลเดอร์ res มีโฟลเดอร์ font ที่มีไฟล์แบบอักษร roboto.ttf ระบบจะเพิ่มแอตทริบิวต์ @font/roboto ลงใน TextView
ขั้นตอนที่ 4: แยกสไตล์
สไตล์คือชุดแอตทริบิวต์ที่ระบุลักษณะที่ปรากฏและรูปแบบของมุมมอง สไตล์อาจมีสีแบบอักษร ขนาดแบบอักษร สีพื้นหลัง ระยะเว้นขอบ ระยะขอบ และแอตทริบิวต์อื่นๆ ที่พบบ่อย
คุณสามารถแยกการจัดรูปแบบของnameมุมมองข้อความเป็นสไตล์และนําสไตล์นั้นกลับมาใช้ซ้ำกับมุมมองจํานวนเท่าใดก็ได้ในแอป การนําสไตล์กลับมาใช้ซ้ำจะช่วยให้แอปมีรูปลักษณ์ที่สอดคล้องกันเมื่อคุณมีหลายมุมมอง การใช้สไตล์ยังช่วยให้คุณเก็บแอตทริบิวต์ทั่วไปเหล่านี้ไว้ในที่เดียวได้ด้วย
- คลิกขวาที่
TextViewในแผนผังคอมโพเนนต์ แล้วเลือกปรับโครงสร้าง > แยกสไตล์ - ในกล่องโต้ตอบแยกสไตล์ 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ในแผนผังคอมโพเนนต์ กล่องโต้ตอบแหล่งข้อมูล จะเปิดขึ้น - เลือก Drawable หากยังไม่ได้เลือก
- ขยาย android เลื่อน แล้วเลือก btn_star_big_on นั่นคือดาวสีเหลือง

- คลิกตกลง

ระบบจะเพิ่มรูปดาวลงในเลย์เอาต์ใต้ชื่อของคุณ เนื่องจากคุณมีLinearLayoutแนวตั้ง ยอดดูที่คุณเพิ่มจึงจะอยู่ในแนวตั้ง
- เปลี่ยนไปที่แท็บข้อความและดูโค้ด
ImageViewที่สร้างขึ้น ความกว้างตั้งค่าเป็นmatch_parentดังนั้นมุมมองจะกว้างเท่ากับองค์ประกอบระดับบน ความสูงตั้งค่าเป็นwrap_contentดังนั้นมุมมองจะสูงเท่ากับเนื้อหาImageViewอ้างอิงถึง Drawablebtn_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คลิกตกลง - ใช้แผงแอตทริบิวต์เพื่อเพิ่มระยะขอบด้านบนเป็น
16dp(ซึ่งเท่ากับ@dimen/layout_margin) ให้กับyellow_starเพื่อแยกรูปดาวออกจากชื่อ - เรียกใช้แอป ชื่อและรูปดาวจะแสดงใน UI ของแอป

ScrollView คือกลุ่มมุมมองที่อนุญาตให้เลื่อนลำดับชั้นของมุมมองที่วางไว้ภายในได้ ScrollView จะมีได้เพียง View หรือ ViewGroup อื่นๆ เป็นองค์ประกอบย่อย โดยทั่วไปแล้วมุมมองของเด็กจะเป็น LinearLayout คุณเพิ่มมุมมองอื่นๆ ได้ภายใน LinearLayout
รูปภาพต่อไปนี้แสดงตัวอย่างของ ScrollView ที่มี LinearLayout ซึ่งมีมุมมองอื่นๆ อีกหลายรายการ

ในงานนี้ คุณจะเพิ่ม ScrollView ที่ช่วยให้ผู้ใช้เลื่อนมุมมองข้อความที่แสดงประวัติโดยย่อได้ หากคุณต้องการทำให้มุมมองเดียวเลื่อนได้ คุณสามารถใส่มุมมองลงใน ScrollView โดยตรง ซึ่งเป็นสิ่งที่คุณทำในงานนี้

ขั้นตอนที่ 1: เพิ่ม ScrollView ที่มี TextView
- เปิด
activity_main.xmlไฟล์ในแท็บออกแบบ - ลาก ScrollView ลงในเลย์เอาต์โดยลากไปยังเครื่องมือแก้ไขการออกแบบ หรือไปยังComponent Tree วาง ScrollView ไว้ใต้รูปดาว
- เปลี่ยนไปที่แท็บข้อความเพื่อตรวจสอบโค้ดที่สร้างขึ้น
// 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ออก เนื่องจากแอปจะมีเพียงมุมมองเดียวที่เลื่อนได้ ซึ่งก็คือTextView - ลาก
TextViewจากจานสีไปยังแผนผังคอมโพเนนต์ วางTextViewไว้ใต้bio_scrollเป็นองค์ประกอบย่อยของbio_scroll
- ตั้งค่า id ของมุมมองข้อความใหม่เป็น
bio_text - จากนั้นเพิ่มรูปแบบสำหรับมุมมองข้อความใหม่ ในบานหน้าต่างแอตทริบิวต์ ให้คลิกจุด 3 จุด ... ข้างแอตทริบิวต์รูปแบบเพื่อเปิดกล่องโต้ตอบทรัพยากร
- ในกล่องโต้ตอบแหล่งข้อมูล ให้ค้นหา
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 เมื่อคุณเรียกใช้แอป รูปภาพนี้จะเลื่อนออกจากมุมมองขณะที่ข้อความเลื่อนขึ้น ซึ่งต่างจากรูปดาว
เคล็ดลับ: ScrollView มีได้เพียง 1 มุมมองย่อย คุณต้องรวมมุมมองที่เลื่อนได้ 2 รายการ ได้แก่ ImageView และ TextView ไว้ใน LinearLayout
ViewGroupคือมุมมองที่สามารถมีมุมมองอื่นๆ ได้LinearLayoutและScrollViewเป็นกลุ่มที่ดูได้LinearLayoutเป็นกลุ่มมุมมองที่จัดเรียงมุมมองย่อยในแนวนอนหรือแนวตั้ง- ใช้
ScrollViewเมื่อต้องการแสดงเนื้อหาบนหน้าจอ เช่น ข้อความยาวหรือคอลเล็กชันรูปภาพ มุมมองที่เลื่อนได้จะมีมุมมองย่อยได้เพียง 1 รายการเท่านั้น หากต้องการเลื่อนมากกว่า 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
