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