[Android Dev] :: RadioGroup & RadioButton (Part I : XML Interface)

วันนี้เราจะมาพูดถึงพฤติกรรมการเลือกของผู้ใช้นะครับ...
การ "เลือกอย่างใดอย่างหนึ่ง" ของผู้ใช้นั้น... ใช้กับข้อมูลที่มีความแน่นอน หรือ Static นั่นเอง
ซึ่งถ้าเราให้ผู้ใช้ ป้อน Input เข้ามาทาง EditText บางทีมันอาจจะไม่ตรงกับข้อมูลที่มีรองรับอยู่...

ซึ่งจะแบ่งเป็น 2 แบบหลัก ๆ คือ
 - RadioGroup & RadioButton
 - Spinner

เรื่องของ Spinner เราจะไปเล่นกันใน Blog หน้านะครับ...
Blog นี้จะสอนการใช้ RadioGroup&RadioButton นะ....

ทำไมต้องใช้ทั้ง 2 Widget ใช้ RadioButton อย่างเดียวไม่ได้หรอ ??
คำตอบ --> ใช้ได้ครับ... แต่... ถ้าเราใช้ RadioButton อย่างเดียวนั้น... เวลาเขียนโค้ดแล้ว
                   เมื่อเราเลือก Choice 1 และกด Choice 2 ตาม... มันจะเลือกให้ทั้งหมด...
                   ซึ่งทำให้เราต้องเขียนโค้ดเพื่อยกเลิกด้วย
                  เช่น ถ้ากด Choice1 ต้องเขียนโค้ดยกเลิก Choice ที่เหลือที่ไม่ได้เลือกไว้...

RadioGroup
เป็น Widget พื้นที่ที่จะรวมกลุ่มของ Radio Button เข้าไว้ด้วยกัน... มันจะรู้ว่า RadioButton จำนวน n ตัว...
เป็นกลุ่มเดียวกัน และเราไม่ต้องเขียนโค้ดเพื่อรองรับการยกเลิก ^^ นั่นคือ เราสามารถเลือกอย่างใดอย่างนึงได้เลย ไม่เกิดปัญหาดังที่กล่าวไว้ด้านบน...

ในที่นี้บาสเขียนโค้ดนำ RadioGroup วางบน RelativeLayout
ซึ่งเราจะยังไม่เห็นอะไรนะครับ เพราะตัว RadioGroup ยังไม่มี RadioButton อยู่ภายใน
ซึ่งโค้ดหลัก ๆ เกี่ยวกับ Property ของ RadioGroup มีดังนี้...

 - บรรทัดแรกประกาศตัวแปรเช่นเคย
 - บรรทัดที่ 2-3 และ 5-6 เป็นการจัดวาง RadioGroup ว่าจะให้มันอยู่ตรงไหนของ Layout
 - บรรทัดที่ 4 นั่นคือ เราจะจัดวาง RadioButton ของเราในแนวตั้ง (Vertical) หรือแนวนอน (Horizontal)

RadioButton
เป็น Widget ของตัว Choice ซึ่งจะมีลักษณะตามที่แนะนำไปด้านบน...
ในที่นี้บาสเขียนโค้ดสร้าง RadioButton ขึ้นมา 3 ตัวนะครับ...
ซึ่งโค้ดนี้จะอยู่ภายใต้บริเวณของ RadioGroup นะครับ... (ใส่ให้ถูกนะ)
  ** ถ้าให้โค้ดนี้เป็น X โค้ดจะอยู่แบบนี้ --> <RadioGroup> X </RadioGroup>

Property ของโค้ดก็เดิม ๆ ครับ ประกาศตัวแปร ความสูง ความกว้าง และการจัดวาง
พิเศษคือ การจัดวางในที่นี่ มันไม่ได้ขึ้นอยู่กับตัว Layout แล้วนะครับ มันจะขึ้นอยู่กับพื้นที่ของ RadioGroup
เช่น ถ้าบาสสั่ง android:layout_marginLeft = "5dp"
       ตัว RadioButton จะกินพื้นที่ขอบด้านซ้ายมา 5 dp จากพื้นที่ของ RadioGroup ไม่ใช่พื้นที่ของ Layout
แล้วก็มีคำสั่งใหม่อันนึงคือ
       android:checked = "true" ส่วนใหญ่จะใส่ไว้อันใดอันหนึ่ง เพื่อตั้งเป็นค่า Default ครับ
จากโค้ดจะได้ดังนี้ ^^


Blog มันชัดยาว เดี๋ยวจะเบื่อกันซะก่อน...
Coding ไปต่อ Blog หน้านะครับ....

Popular posts from this blog

12 วิธี การบริการและดูแลลูกค้าในร้าน Starbucks

"อีสุกอีใส" ประสบการณ์เมื่อต้องมาเป็นตอนอายุ 22

[Android Dev] การติดตั้ง Eclipse+AndroidSDK เพื่อพัฒนาโปรแกรมบน Android