บทความ

การปรับแต่ง TabLayout ของ Android

รูปภาพ
TabLayout เป็นเหมือนกับแถบเมนูที่อยู่ด้านบนของหน้าจอ ต่อจาก toolbar ลงมา ดังภาพ เราสามารถจัดการปรับเปลี่ยน หรือตั้งค่าองค์ประกอบต่าง ๆ ได้ ดังนี้ การกำหนดขนาดตัวอักษรบน TabLayout ก่อนอื่นต้องกำหนด style ไว้ใน style.xml เช่น <style name="MyCustomTabText" parent="TextAppearance.Design.Tab"> <tem name="android:textSize">20sp</item> </style> จากนั้น ที่ไฟล์ xml layout ที่มี TabLayout กำหนดให้ใช้ Style กับตัวอักษร ดังนี้ <android.support.design.widget.TabLayout ... app:tabTextAppearance="@style/MyCustomTabText" ... /> การจัดให้ TabLayout อยู่กึ่งกลางหน้าจอ ที่ไฟล์ xml layout ที่มี TabLayout กำหนดให้ใช้ Style กับตัวอักษร ดังนี้ <android.support.design.widget.TabLayout ... android:layout_gravity="center" ... /> ในกรณีที่มีการกำหนดให้ TabLaout มี scrollable ได้ ต้องเอาออกด้วย เพราะจะขัดกัน มี 2 อย่างอยู่ด้วยกันไม่ได้ การกำหนดความหนา และสี ของ S

การใช้ let, let's

รูปภาพ
เราคุ้นเคยกับคำว่า Let's เช่นพูดว่า Let's go now. = ไปกันเลยตอนนี้ Let's go for a walk. = ไปเดินเล่นกันดีกว่า แต่คำว่า Let ยังมีอีกหลายความหมาย รวมทั้งมีสำนวนเกี่ยวกับ Let ที่น่าสนใจอีกด้วย ความหมายที่ 1: อนุญาต รูปแบบประโยคคือ => let + object + infinitive without to เช่น She let me look at the photos. ( ไม่ใช่   She let me to look at the photos. ) เธอให้ผม/ฉันดูรูปภาพพวกนั้น การใช้ในความหมายว่าอนุญาต เราจะไม่ใช้ let ในกรณีที่เป็น Passive Voice เราพูดว่า They didn't let us take photographs inside the theater. We weren't allowed to take photographs inside the theater. อย่าใช้ We weren't let (to) take photographs... ความหมายที่ 2 เสนอแนะ/ชักชวน พูดว่า/ใช้  Let us ... ในกรณีที่เป็นทางการมาก ๆ เช่นในการเขียน หรือ กล่าวสนุทรพจน์ Let us remember all those who have died in this terrible conflict. ขอเราจงจำพวกเขาเหล่านั้นซึ่งเสียชีวิตในความขัดแย้งที่เลวร้า

การใช้คำว่า next to

รูปภาพ
next to ส่วนใหญ่เรามักจะแปลกันว่า ต่อจาก เช่น Suda is sitting next to Prakob. = สุดานั่งต่อจากประกอบ แต่ความจริง คำว่า next to มีความหมายได้หลายอย่าง เช่น ความหมายที่ 1 หมายถึง ต่อจาก ติดกัน หรือ ข้าง ๆ มีความหมายเดียวกับคำว่า adjacent to  เช่น  Trump is next to Putin.  The kitten is next to the rabbit. ความหมายที่ 2 หมายถึง เกือบจะ หรือ ใกล้จะ หรือ มีความหมายเดียวกับคำว่า almost หรือ nearly เช่น He has sold his house and has no job and so now he has next to nothing. เขาขายบ้าน และไม่มีงานทำ ดังนั้น ตอนนี้เขาเกือบจะไม่มีอะไรเลย I bought this antique chair for next to nothing. ผมซื้อเก่าอี้โบราณตัวนี้ได้ถูกเหมือนได้เปล่า ความหมายที่ 3 หมายถึง นอกจากนี้ (aside from/in addition to/besides) เช่น Next to fried rice, chicken curry is my favorite dish. นอกจากข้าวผัดแล้ว อาหารจานเด็ดที่ผมชอบคือแกงไก่

Would you like a hand ....?

รูปภาพ
คำว่า hand หมายถึง มือ แต่ Would you like a hand...? ไม่ได้หมายความว่า คุณต้องการมือ นะครับ Would you like a hand...?   คำว่า hand ในประโยคนี้ หมายถึงความช่วยเหลือให้ทำอะไรสักอย่าง คำกริยาที่ต่อมา ต้องเติม ing เช่น Would you like a hand ​ carrying those bags? คุณต้องการความช่วยเหลือให้ช่วยเอากระเป๋าพวกนั้นไปให้หรือไม่ Would you like a hand bringing those bags up to your room? Our bellhop can take those for you. คุณต้องการความช่วยเหลือให้ขนกระเป๋าพวกนั้นไปที่ห้องคุณหรือไม่ พนักงาน (ยกกระเป๋า) โรงแรมของเราขนกระเป๋าไปให้ได้ สำนวนอื่น ๆ ที่มีความหมายว่า ความช่วยเหลือ เช่น give someone a hand  Could you give me a hand with the ​ table, ​ please? ช่วยจัดการโต๊ะนี่หน่อยนะครับ ? ( ได้ไหมครับ) lend someone a hand  Could you lend me a hand with the table,  ​ please? ช่วยจัดการโต๊ะนี่หน่อยนะครับ ? ( ได้ไหมครับ) สำนวนเกี่ยวกับ Hand อื่น ๆ ที่น่าสนใจ get/have a hand in something = มีส่วนร่วมในการเริ่มต้น หรือดำเนินกิจกรรม เช่น I would like to have a hand in the pl

มังสวิรัติ กับ มะเร็งลำไส้ใหญ่ และโรคหัวใจ

รูปภาพ
คิดว่า มังสวิรัติ ซึ่งกินผักที่มีเส้นใยสูงช่วยให้ระบายท้องได้ดี ไม่น่าจะมีปัญหาในเรื่องมะเร็งลำไส้ แต่วันนี้ฟังหมอดาเลีย (The Dr Daliah Show Thursday March 2016 Hour 2)  บอกว่า คนกินผัก หรือ Vegetarian หรือ มังสวิรัติ เสี่ยงต่อการเป็นมะเร็งลำไส้ (colon cancer) และโรคหัวใจ (heart disease) ผู้ที่มีบรรพบุรุษที่เป็นมังสะวิรัติ หรือ Vegetarian ได้รับการสืบทอดการกลายพันธุ์ในระดับยีนหรือโมเลกุลของดีเอ็นเอ (DNA Gene Mutation) จากบรรพบุรุษ การกลายพันธ์นี้มีประโยชน์คือ ช่วยให้เราสามารถดูดซึมสารอาหารที่จำเป็นจากพืชได้ แต่มีผลเสียคือ เมื่อเรากินอาหารที่ใช้น้ำมันพืช(vegetable oils) เช่น น้ำมันทานตะวัน ยีนนี้จะเปลี่ยนกรดไขมัน(fatty acids) เป็น กรดแอแลคาโดนิค (arachidonic acid) ซึ่งจะทำให้เกิด inflammation disease (การอักเสพ) ซึ่งจะส่งผลให้มีความเสี่ยงต่อการเป็นมะเร็งลำไส้ (colon cancer) และโรคหัวใจ (heart disease) โดยสรุปคือ ผู้ที่เป็นมังสวิรัติ หรือ Vegetarian มีความเสี่ยงต่อการเป็นมะเร็งลำไส้ มากกว่าผู้ที่กินเนื้อ (meat eaters) ประมาณ 40% เป็นวิจัยของมหาวิทยาลัย Cornell University โดย Profes

การตรวจสอบ หรือ Debug โปรแกรม ใน Android Studio

รูปภาพ
การ Debug โปรแกรม เป็นเรื่องสำคัญ เพราะทำให้เรารู้ว่ามีข้อผิดพลาด หรือ Error อะไรเกิดขึ้นอย่างไร และ ณ จุดนั้น ค่าต่าง ๆ ของตัวแปรเป็นอย่างไร เป็นไปตามที่ต้องการหรือไม่ เพื่อที่จะได้แก้ไขให้ตรงจุด ก่อนการแก้ไข ควรเปิด Simulator ให้เรียบร้อยเสียก่อน ผมชอบใช้ โทรศัพท์จริง เป็น Simulator เพราะเท่าที่สังเกตดูน่าจะเร็วกว่าการใช้ Simulator ใน PC การ Debug โปรแกรมใน Android Studio มีดังนี้ เปิดโปรแกรม ใน Android Studio และไปยังจุดที่ต้องการดูค่าต่าง ๆ  คลิกเพิ่มจุดหยุด หรือ Break point หน้าบรรทัดที่ต้องการดูค่าตัวแปร ในภาพ จะเห็นว่ามีการกำหนดจุดหยุด 2 จุดด้วยกัน คลิกปุ่ม Debug บนแถบเมนู Android Studio จะให้เลือก Simulator ถ้าเปิดไว้ก่อนก็จะมีมาแสดง ในตัวอย่างนี้ ผมใช้โทรศัพท์ จึงแสดงดังภาพ เมื่อกดปุ่ม OK โปรแกรม Android Studio จะทำงานในโหมด Debug โดยจะหยุดในตำแหน่งที่ระบุไว้ด้วยจุดสีแดง  จะเห็นมีหน้าจอ Debug เกิดขึ้น ถ้าไม่เห็น สามารถคลิกแถบ Debug ที่ด้านล่างได้ ในหน้าจอ Debug จะเห็นแถบควบคุมต่าง ๆ เช่น แถบตรวจดูค่าของตัวแปร หรือ Watches ถ้าไม่เห็นแถบดังกล่าว แสดงว่าแ

การสร้าง ViewPager สำหรับ Android 1.5

รูปภาพ
ViewPager ของ Android ทำให้สามารถสร้างหน้าจอข้อมูลบนโทรศัพท์ที่ใช้ OS ของ Android ได้สะดวกขึ้น เพราะมีการออกแบบไว้แล้วอย่างเรียบร้อย สามารถใช้นิ้วลาก/ปัด/swipe เพื่อเปลี่ยนหน้า จากอีกหน้าหนึ่ง ไปยังหน้าหนึ่งได้ ดังตัวอย่างข้างล่างนี้ ในตัวอย่างนี้ ใช้ Android Studio 1.5 เพื่อสร้าง ViewPager โดยใช้ Fragment เพียง Fragment เดียว และส่งข้อมูลมาแสดงจำนวนทั้งหมด 6 หน้าด้วยกัน การส่งข้อมูลไปยัง Fragment ใช้การส่งแบบ static โดยส่งเป็น String แล้วมาแยกเพื่อนำไปแสดงใน TextView จำนวน 2 ข้อความด้วยกัน นอกจากนี้ จะมีการกำหนดให้มีหัวของแต่ละรายการ โดยใช้ PageStrip เพื่อแสดงรายการ หลักการ สร้าง Fragment สำหรับแสดงข้อมูลแต่ละหน้า ในตัวอย่างนี้ จะแสดงเฉพาะ ชื่อ และจังหวัดเท่านั้น โดยจะใช้ Fragment นี้กับข้อมูลทั้งหมด ซึ่งมีด้วยกัน 6 รายการ (แสดงรายการละหน้า) ไฟล์ Java Class สำหรับ Fragment นี้ จะกำหนดให้มีตัวแปร เป็น Static เพื่อรับการส่งข้อมูลเข้ามาจากภายนอกด้วย จากนั้นจะสร้าง Adapter ซึ่งเป็นตัวกลางจัดการข้อมูลไปยัง Fragment และสุดท้าย ก็จะเป็นหน้าหลัก ซึ่งมี Fragment

การเปลี่ยนชื่อ Project และ Package ของ Android Studio 1.5

รูปภาพ
มีหลายครั้งที่เราต้องการ คัดลอก และ วาง Project ของ Android เพื่อปรับแก้ไข หรือ เพิ่มคุณลักษณะ แต่ยังคงรักษา Project เดิมเอาไว้ การเปลี่ยนชื่อ Project อย่างเดียวยังไม่พอ ต้องเปลี่ยนชื่อ Package ด้วย เพราะ Android ถือว่า ชื่อ Package จะต้องไม่ซ้ำกัน ถ้าเปลี่ยนชื่ออย่างเดียว เมื่อนำขึ้นเผยแพร่ จะทำให้เกิดปัญหาได้ วิธีการเปลี่ยนชื่อ Project และ Package ไปที่ห้อง Project ของ Android คัดลอก และวาง ห้อง Project ที่ต้องการคัดลอก  วาง และเปลี่ยนชื่อห้อง เช่น จากของเดิม engExamPrepPro4 เป็น engExamPrepPro5 เปิด Android Studio และเลือก Import Project เลือก Project ที่เปลี่ยนชื่อแล้ว ในตัวอย่างคือ engExamPrepPro5 รอสักครู่ Project ใหม่พร้อมชื่อใหม่จะเปิดขึ้น ที่ หน้าต่าง Explorer ของ Android Studio ให้เลือก Android ไปที่ห้อง Package ของ Project แล้วคลิกขวา  คลิกขวา เลือก Refactor > Rename จะเกิดหน้าจอโต้ตอบ ให้เลือก Rename Package จะเกิดหน้าจอโต้ตอบ ให้ระบุชื่อ Package พร้อมทั้งให้แก้ไขชื่อทั้งหมดใน Project แล้วกด Refactor รอสักครู่ เมื่อ Android ค้นหาข้อความ

ตัวหนังสืออ่านไม่ออก เป็นเครื่องหมายคำถาม

รูปภาพ
การเปลี่ยนการเข้ารหัส หรือ Collation ฐานข้อมูลบน Server มักจะสร้างปัญหาเกี่ยวกับตัวอักษร ทำให้อ่านไม่ออก กลายเป็นเครื่องหมายคำถาม หรือ ตัวอักษรต่างดาวก็มี ดังตัวอย่างข้างล่างนี้ สาเหตุเกิดจากการไม่เข้ากันของการกำหนดชุดอักษร บนฐานข้อมูล MySql ใน Server และการใช้ encoding ของไฟล์ ตลอดจนการกำหนดชุดตัวอักษร หรือ charset บนหน้าเว็บ ทำให้มีปัญหาไม่ลงตัว Browser จึงแสดงออกมาเป็นเครื่องหมายคำถาม หรือ ข้อความต่างดาว อ่านไม่ออก เมื่อสังเกตจากตัวอย่าง จะเห็นว่า บางตัวก็เป็นตัวหนังสือธรรมดา แต่บางตัวก็เป็นตัวอ่านไม่ออก ที่เป็นเช่นนี้เพราะ ตัวที่อ่านไม่ออก เป็นข้อมูลที่ดึงออกมาจากฐานข้อมูลบน Server ส่วนตัวที่อ่านออก เป็นส่วนที่เขียนโค้ดในหน้าเว็บ ในตัวอย่างนี้ หน้าเว็บกำหนด charset เป็น tis-620 วิธีการแก้ไข หลังจากที่ติดต่อกับฐานข้อมูลแล้ว ให้ใช้คำสั่ง mysql_set_charset() เพื่อเปลี่ยนให้เป็น charset ที่ใช้ในหน้าเว็บ เช่น                                 $cid = mysql_connect($host,$usr,$pwd); mysql_set_charset("tis620",$cid); mysql_select_db($db); เมื่อเปลี่ยนแล้ว ต

การใช้ CheckBox ใน listView ด้วย CustomAdapter ของ Android

รูปภาพ
เมื่อคราวที่แล้ว พูดถึงเรื่องการสร้าง checkbox ใน listView ด้วย customAdapter ของ Android แต่ยังไม่ได้พูดถึงการใช้งาน checkbox ที่สร้างขึ้น Android สร้าง ListView เพื่อการประหยัดทรัพยากร โดยจะไม่ทำการแปลง xml ไฟล์ ให้เป็น java object ในทุกครั้งที่มีการ scroll หน้าจอของ listview โดยการใช้ inflater เพราะเป็นกระบวนการที่ต้องนำเอา view ที่มีทั้งหมดใน xml มาเปลี่ยนให้เป็น object เช่น ถ้า list มีทั้งหมด 30 รายการ แต่ละรายการประกอบด้วย textView imageView และ checkBox ก็ต้องทำการแปลงให้เป็น java object ทั้งหมด ซึ่งอาจจะไม่จำเป็น เพราะรายการที่อยู่นอกหน้าจออาจจะไม่ได้ถูกใช้งานก็ได้ วิธีการประหยัดของ android คือการนำเอา list item ที่ถูก scroll ออกไปนอกหน้าจอ กลับมาใช้ใหม่ ซึ่ง Android เรียกว่า เป็นการ Recycle โดยกระบวนการทั้งหมด จะถูกกระทำใน getView() วิธีการนี้ ทำให้เราต้องจัดการกับ checkbox ที่มีอยู่ใน listview เนื่องจากมีการนำกลับมาใช้ใหม่ ทำให้ตำแหน่งของ checkbox ที่ถูกเลือก เปลี่ยนตำแหน่งไปเป็นแบบสุ่ม เป็นผลให้ เมื่อคลิกที่ checkBox และทำการ scroll จะพบว่า มีการเลือก checkBox ตัวอื่น