লেআউট ইদানিংকালে ডিজাইন করা হয়েছে যাতে EditText এবং Button উভয় উইডজিট তার উপাদানগুলোর সাথে খাপ খাওয়ার মতো যথেষ্ট বড় হয়. ফিগার ২ তে যেভাবে দেখানো হয়েছে।
ফিগার ২. EditText এবং Button উইজিট এর "wrap_content"এ তাদের প্রস্থে সেট আছে।
এটা বাটনের জন্য ভালো কাজ করে কিন্তু টেক্সট ফিল্ড এর জন্য ততটা ভালো নয়, কারন ব্যবহারকারীরা বড় আকারের কিছু টাইপ করতে পারে। সুতরাং অব্যবহৃত স্ক্রিন প্রস্থ কে টেক্সট ফিল্ড দিয়ে পূর্ণ করাটা ভালো হবে। আপনি এটা করতে পারবেন এর LinearLayout মধ্যে weight প্রপার্টি দিয়ে, যা android:laout weight এট্রিবিউট ব্যবহার করে এটাকে সুনির্দিষ্ট করতে পারবেন।
ওয়েট ভ্যালু হচ্ছে একটা সংখ্যা যা প্রতিটা ভিউ এর জন্য যে পরিমান স্পেস আছে তার কতটুকু ব্যয় করা উচিত তার পরিমান সুনির্দিষ্ট করে দেয়, অনুরূপভাবে সিবলিং ভিউ এর ক্ষেত্রে কতটা স্পেস ব্যয় করা হবে সেটাও। এই কাজ এভাবে বোঝা যায় যে একটা পানীয়র মিশ্রনে কোনটা কি পরিমান আছে: দুই অংশ ফলের রস এবং এক অংশ পানি, এর অর্থ পানীয়ের দুই-তৃতীয়াংশ ফলের রস আছে। উদাহরন হিসাবে, আপনি যদি একটা ভিউ এর ওয়েট ২ ধরেন এবং আরেকটির জন্য ১ ধরে নেন তাহলে এর যোগফল হবে ৩, সুতরাং প্রথম ভিউ বিদ্যমান স্পেসের দুই-তৃতীয়াংশ পূর্ণ করে আছে এবং দ্বিতীয় ভিউ বাকী অংশ দখল করে। আপনি যদি তৃতীয় ভিউ যোগ করেন এবং এটার ওয়েট ১ নির্ধারন করেন তখন প্রথম ভিউ (যার ওয়েট ২) বিদ্যমান স্পেসের অর্ধেক দখল করবে, বাকী দুইটা ভিউ এক চতুর্থাংশ করে স্থান দখল করবে।
সকল ভিউ এর ডিফল্ট ওয়েট হচ্ছে ০, সুতরাং আপনি যদি কোন ওয়েট ভ্যালু ০ এর চেয়ে বেশী করে নির্দিষ্ট করে দেন, তখন ওই ভিউ তার যেটুকু দরকার তা দেয়া সত্ত্বেও যতটুকু স্পেস বাকী আছে তার সবটুকুই পূরণ করে নেয়। সুতরাং EditText এলিমেন্ট দিয়ে আপনার লেআউটের বিদ্যমান স্পেস পূরণ করার জন্য এটার ওয়েট ১ দিন এবং বাটনটিকে কোন ওয়েট না দিয়েই ছেড়ে দিন।
<EditText
android:layout_weight="1"
... />
ওয়েট সুনির্দিষ্ট করার সময় আপনার লেআউটকে কার্যকর করতে, আপরান উচিত EditText এর প্রস্থর আকার শুন্যতে (Zero)পরিবর্তন করা (0dp)। প্রস্থর সেটিং জিরো (0dp) লেআউটের পারফরমেন্সকে উন্নত করে কারন "wrap_content" কে প্রস্থ হিসাবে ব্যবহার করতে সিস্টেমটিকে প্রস্থর হিসাবনিকাশ করার দরকার হয়, যা শেষ পর্যন্ত অপ্রাসঙ্গিক কারন বিদ্যমান স্পেসকে পূরন করতে ওয়েট ভ্যালুকে আরেকটি প্রস্থ হিসাব করতে হয়।
<EditText
android:layout_weight="1"
android:layout_width="0dp"
... />
ফিগার ৩ দেখাচ্ছে যে যখন আপনি সকল ওয়েট EditText এলিমেন্টে নিয়োজিত করেন তার ফলাফল কি।
ফিগার ৩. EditText উইজিট সকল লেআউট ওয়েট প্রদান করে, LinearLayout এর মধ্যে বাকী স্পেস পূর্ণ করুন।
এখানে দেখা যাচ্ছে একটি সম্পূর্ণ লেআউট ফাইল দেখতে কেমন হবে:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/edit_message"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
</LinearLayout>
এই লেআউট ডিফল্ট Activity ক্লাস দ্বারা প্রয়োগ করা হয় যা এসডিকে টুলস তৈরী করেছিল, যখন আপনি এই প্রজেক্ট তৈরী করেছিলেন, সুতরাং আপনি এখন অ্যাপ রান করে এর ফলাফল দেখতে পারেন।
* ইক্লিপস এ, টুলবার থেকে Run এ ক্লিক করুন।
* অথবা কমান্ড লাইন থেকে আপনার অ্যান্ড্রয়েড প্রজেক্ট রুট ডিরেক্টরী পরিবর্তন করূন এবং এরপর করুন:
ant debug
adb install bin/MyFirstApp-debug.apk
পরবর্তী অনুশীলনীতে, বাটন প্রেস করতে কীভাবে রেসপন্ড করবেন, টেক্সট ফিল্ড থেকে কীভাবে কনটেন্ট পড়বেন, অন্য কর্মকান্ড শুরু করবেন সেই কাজগুলো এবং অন্যান্য কাজ শেখানো হবে।