Lesson 7 (Layout & Size)
ဒီေန႔တင္ေပးမွာက အေရးအႀကီးဆံုးအခန္းျဖစ္တဲ့ Layout အခန္းပါ။ ဘာျဖစ္လို႔အေရးႀကီးတာလဲဆိုေတာ့ ေဆာ့ဝဲတိုုင္းမွာ သံုးရမွာမို႔လို္ပါ။ ကြၽန္ေတာ္ကလဲ တစ္ခုေလာက္တင္ေပးၿပီး ၁ပတ္ေလာက္နားတာဆိုေတာ့ မွတ္မိေသးလားမသိပါဘူး။
•Layout ဆိုတာ နားလည္ေအာင္ေျပာရရင္ အလႊာေပါ့ဗ်ာ။ သူမ်ားေတြကေတာ့ ဘယ္လိုအဓိပၸါယ္ ဖြင့္လဲမသိဘူး။ ကြၽန္ေတာ္က နားလည္ေအာင္ေျပာလိုက္တာပါ။ ဥပမာတစ္ခုေျပာပါမယ္။ button တစ္ခုကိုလုပ္မယ္ဆို button ရဲ႕code ေတြျဖစ္တဲ့
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"/>
ဆိုတဲ့code ေတြကို ထည့္ရပါတယ္။ ဒီနည္းကို lesson 3 မွေျပာထားၿပီသားပါ။ button apk တစ္ခုလုပ္ရင္ အဲ့ဒါနဲ႔ပဲမၿပီးပါဘူး။ project အသစ္လုပ္လိုက္ရင္ ဘာမွမထည့္ခင္ေပၚတဲ့code ေတြမွာ <LinearLayout .........> ဆိုၿပီးေတာ့ စေပးထားၿပီ </LinearLayout> ဆိုၿပီး ျပန္ပိတ္ေပးထားပါတယ္။ အဲ့ဒါ Layout တစ္ခုပါ။
Layout ႏွစ္မ်ိဳး႐ွိပါတယ္။ LinearLayout နဲ႔ RelativeLayout ဆိုၿပီး႐ွိပါတယ္။ LinearLayout က သူ႔ထဲမွာထည့္မယ့္ item(buttonတို႔textField)တို႔ကို LinearLayout ကေနလွမ္းထိန္းခ်ဳပ္ႏိုင္ၿပီးေတာ့ RelativeLayout ကေတာ့ Item ေတြကိုယ္တိုင္ ထိန္းခ်ဳပ္ႏိုင္ပါတယ္။ ဥပမာ LinearLayout မွာ android:orientation ကို vertical လုပ္ထားမယ္ဆိုရင္ </LinearLayout> မေရာက္သေရြ႔ item ေတြအကုန္လံုးက ေဒါင္လိုက္အေနအထားနဲ႔ စီသြားပါလိမ့္မယ္။
(မွတ္ခ်က္>> Item မ်ားမွာ Button မ်ား Text မ်ား TextField မ်ား ကိုရည္ၫႊန္းသည္။) ၿပိီးေတာ့ android:orientation ကို horizontal လုပ္လိုက္ရင္ </LinearLayout> နဲ႔မပိတ္သေရြ႔ အလ်ားလိုက္အတိုင္း စီသြားပါလိမ့္မယ္။ တကယ္လို႔ <RelativeLayout နဲ႔ဆိုရင္ android:orientation ကအလုပ္မလုပ္ပါဘူး။ သူက item ကေနလုပ္ရတာပါ။ ဥပမာ ခလုပ္တစ္ခုကို အလယ္မွာထားခ်င္ရင္ <Button ဆိုတဲ့ code ေတြထဲမွာ android:layout_gravity="center" ဆိုတာေလးထည့္ရတာေပါ့။ {layout_gravity အေၾကာင္းကို Lesson 8တြင္ ႐ွင္းလင္းေပးသြားပါမည္။} သူကနည္းနည္းေတာ့ အလုပ္႐ႈပ္တယ္။ ဒါေပမယ့္ ခလုပ္ေတြ တစ္ခုနဲ႔တစ္ခု ထပ္ထားလို႔ရတယ္။ ကိုယ္ႀကိဳက္တဲ့ေနရာထားလို႔ရတယ္။ ကြၽန္ေတာ္အၾကံျပဳခ်င္တာကေတာ့ Linear Layout က RelativeLayout ထက္ ပိုလြယ္တာေၾကာင့္ မကြၽမ္းေသးရင္ Linear Layout ပဲသံုးၾကပါလို႔အၾကံျပဳပါတယ္ခဗ်ာ။
•Size
Size ေတြအေၾကာင္းေျပာမယ္ေနာ္။ ကြၽန္ေတာ္လုပ္ခဲ့တဲ့ Lesson ထဲမွာ ေတြ႔မိမွာေပါ့။ android:layout_width တို႔ android:layout_height တို႔။ အဲ့အေၾကာင္းေလးေျပာပါမယ္။ android:layout_width ဆိုတာ အလ်ားလိုက္အက်ယ္ေပါ့။ android:layout_heightဆိုတာက အျမင့္ေပါ့။ သူ႔မွာvalue သံုးမ်ိဳး႐ွိပါတယ္။value ဆိုတာက ညီမ်ွျခင္းထိုးၿပီး "" ထဲေရးတာေပါ့။ ေ႐ွ႕က android:layout_width တို႔ android:layout_heightတို႔ android:textတို႔က key လို႔ေခၚပါတယ္။(ေၾကာ္ျငာဝင္လိုက္တာ :-P :-P ) အေပၚျပန္သြားမယ္ဗ်ာ။ အဲ့ value သံုးမ်ိဳးက-
1• Match_parent
2•Wrap_content
3•Fix Size တို႔ပါ။
•Match_parent
ဒီဟာကေတာ့ အသံုးနည္းပါတယ္။ သူ႔အေၾကာင္းနည္းနည္းေျပာျပမယ္ေနာ္။ ဥပမာ Button ႏွစ္ခုကို အလ်ားလိုက္အတိုင္းထားမယ္ဆိုရင္ button တစ္ခုရဲ႕အက်ယ္ကို screenရဲ႕ ၃ပံုတစ္ပံုေလာက္ထားၿပီး ေနာက္တစ္ခုကို match_parent ထားမယ္ဆို က်န္တဲ့ ၃ပံု၂ပံုကို match_parent ထားတဲ့ ခလုပ္က ယူသြားပါလိမ့္မယ္။ match_parent ကေနာက္ပိုင္း tutorial ေတြလုပ္ရင္း နားလည္သြားပါလိမ့္မယ္။
•Wrap_content
ဒီဟာက ကြၽန္ေတာ္ေ႐ွ႕ပိုင္း lesson ေတြမွာ သံုးခဲ့တဲ့ value ေတြပါ။ wrap_content သံုးရင္ သူ႔ထဲမွာ႐ွိတဲ့ item ေတြ႐ွိသေလာက္ပဲ ေနရာယူတာပါ။ ဥပမာ ခလုပ္တစ္ခုကို wrap_content နဲ႔size ယူမယ္ဆို ခလုပ္မွာထည့္ထားတဲ့ စာလံုး႐ွိသေလာက္ပဲ ေနရာယူမွာပါ။ ဥပမာ ခလုပ္တစ္ခုမွာ android:text က Help လို႔ပဲေရးထားရင္ Help စာလံုးအက်ယ္ေလာက္ပဲ button ကက်ယ္မွာပါ။ ေဘးကိုလည္းမပိုပါဘူး။ တကယ္လို႔ android:text မွာ introduction လို္ေရးထားရင္ေတာ့ button က introduction ဆိုတဲ့ စာလံုးအက်ယ္ေလာက္ က်ယ္သြားၿပီး Help ဆိုတဲ့ Button ထက္ ႀကီးသြားမွာေပါ့။ ဒီေလာက္ဆို wrap_content အေၾကာင္းနားလည္ေလာက္ပါၿပီ။
Fix_size
ဒီမွာႏွစ္မ်ိဳးထပ္ကြဲပါတယ္။
Fill_parentနဲ႔ dp ဆိုတဲ့ ယူနစ္ပါတဲ့ size ပါ။
Fill_parent အေၾကာင္းအရင္ေျပာပါမယ္။ fill_parent ဆိုတာ အျပည့္ယူတာေပါ့။ ဥပမာ ခလုပ္တစ္ခုရဲ႕ အက်ယ္ကို screen အျပည့္ယူခ်င္ရင္ android:layout_width="fill_parent"ဆိုၿပီး သံုးရပါတယ္။ ေနာက္ၿပီး အျမင့္ပါအျပည့္ထပ္ယူခ်င္ရင္ android:layout_height ကို fill_parent လုပ္လိုက္ေပါ့။
ေနာက္တစ္ခုက dp နဲ႔ေရးတာပါ။ dp ဆိုတာ အတိုင္းအတာရဲ႕ ယူနစ္ပါ။ သူက button တို႔ text တို႔ကို တစ္ညီတည္းထားခ်င္ရင္ သံုးတာပါ။ ဥပမာ ခလုပ္ႏွစ္ခုကို အက်ယ္အတူတူပဲ ထားခ်င္ရင္ wrpa_contentလည္းသံုးလို႔မရပါဘူး။ ဘာျဖစ္လို႔လဲဆိုေတာ့ စာလံုးခ်င္းမွမတူတာ။ fill_parent လိုအျပည့္လဲမထားခ်င္ပါဘူး။ အဲ့က်ရင္ ခလုပ္ႏွစ္ခုလံုးရဲ႕ layout_width value ကို 100dp လို႔သံုးပါတယ္။ နည္းနည္းထပ္က်ယ္ခ်င္ေသးရင္ 150dp တို 200dp တို႔ ႀကိဳက္သလို႔သံုးလို႔ရပါတယ္။ height လဲအဲ့တိုင္းပါပဲ ခလုပ္ႏွစ္ခုလံုးကို android:layout_height="80dp" ဆိုၿပီး ႏွစ္ခုလံုးထည့္လိုက္ရင္ အျမင့္တူသြားပါၿပီ။ အဲ့ေလာက္ဆို စိတ္ႀကိဳက္ထည့္ၿပီးသံုးၾကည့္ပါ။
အစကေတာ့ Layout ဆိုၿပီး lesson တစ္ခါ size ဆိုၿပီး lesson တစ္ခါ တင္ေပးမလို႔ပါ။ ႏွစ္ခုလံုးအေရးႀကီးတာမို႔လို႔ တစ္ကြဲတစ္ျပားစီ မျဖစ္ေအာင္ စုတင္ေပးလိုက္တာပါ။ ေနာက္ထပ္ အေသးစိတ္ကို ေနာက္ထပ္Lesson ေတြမွာၾကံဳရင္ၾကံဳသလို ေျပာျပေပးသြားပါမယ္။
အဆင္မေျပတာေလးေတြ comment မွာ ဝင္ေပးႏိုင္ပါတယ္။
သင္၏comment တစ္ေၾကာင္းသည္ ကြၽန္ုပ္အတြက္ ေနာက္ပိုစ့္မ်ားတင္ရန္ အားေဆးတစ္ခြက္ ျဖစ္ေစပါလိမ့္မည္။

ေကာင္းတယ္ဆရာ။ နည္းနည္းေတာ့ၾကာတယ္။
ReplyDeleteဆရာ ျပန္႐ွယ္လိုက္တယ္
ReplyDeleteေကာင္းလိုက္တာ ေက်းဇူးလည္းတင္ပါတယ္ ဆရာ
ReplyDelete