কয়েকটি স্তরের নেস্টেডকে LinearLayoutsএকের মধ্যে রূপান্তর করে আমার লেআউটগুলিকে আরও দক্ষ করে তোলার জন্য আমি এখন কয়েক দিন ধরে চেষ্টা করছি RelativeLayoutএবং এমন কয়েকটি সমস্যার মুখোমুখি হয়েছি যেটির জন্য আমি কোন কাজের সন্ধান করতে পারি নি ...
আমি অ্যান্ড্রয়েড শুরুর গোষ্ঠী এবং এই সাইটটি অনুসন্ধান করেছি এবং এমন কোনও সমস্যা খুঁজে পাইনি যা আমাকে সমস্যার সমাধান করতে সহায়তা করবে।
আমি ব্লগগুলির একটিতে পড়েছি যা আপনি মার্জগুলির সাথে লেআউটগুলি একত্রিত করতে পারেন এবং ট্যাগগুলি অন্তর্ভুক্ত করতে পারেন। আমার কাছে যা আছে তা RelativeLayoutমূল উপাদান সহ একটি প্রধান বিন্যাস ফাইল । এর মধ্যে আমার 5 টিতে এমন ট্যাগ অন্তর্ভুক্ত রয়েছে যা 5 টি বিভিন্ন এক্সএমএল লেআউট ফাইলের রেফারেন্স করে যা প্রত্যেকটির মূলের জন্য একত্রীকরণ উপাদান রয়েছে (আমার বিভক্ত ফাইলগুলির সমস্তগুলি সেগুলির আইডির ব্যতীত একই)।
আমি দুটি সমস্যার মধ্যে দৌড়াচ্ছি, যা আমি আমার লেআউট কোডের সরলিকৃত সংস্করণ পোস্ট করার পরে ব্যাখ্যা করব:
নমুনা প্রধান লেআউট ফাইল:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/translucent_gray" >
<include
android:id="@+id/running_gallery_layout_id"
layout="@layout/running_gallery_layout" />
<include
android:id="@+id/recent_gallery_layout_id"
layout="@layout/recent_gallery_layout"
android:layout_below="@id/running_gallery_layout_id" />
<include
android:id="@+id/service_gallery_layout_id"
layout="@layout/service_gallery_layout"
android:layout_below="@id/recent_gallery_layout_id" />
<include
android:id="@+id/process_gallery_layout_id"
layout="@layout/process_gallery_layout"
android:layout_below="@id/service_gallery_layout_id" />
</RelativeLayout>
নমুনা অন্তর্ভুক্ত মার্জ ফাইল:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
style="@style/TitleText"
android:id="@+id/service_gallery_title_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left"
android:text="@string/service_title" />
<Gallery
android:id="@+id/service_gallery_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_below="@id/service_gallery_title_text_id" />
<TextView
style="@style/SubTitleText"
android:id="@+id/service_gallery_current_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/service_gallery_title_text_id"
android:layout_above="@id/service_gallery_id" />
</merge>
আমি দুটি সমস্যার মধ্যে চলেছি:
1) android:layout_*অন্তর্ভুক্ত ট্যাগ ব্যবহার করার সময় বৈশিষ্ট্যগুলি এড়ানো হবে বলে মনে হয় এবং মার্জ করা লেআউটগুলির সমস্ত একে অপরের উপরে প্রদর্শিত হয়। এই পোস্ট অনুসারে ( http://developer.android.com/resources/articles/layout-tricks-reuse.html ) " ট্যাগের android:layout_*সাথে কোনও বৈশিষ্ট্য ব্যবহার করা যেতে পারে <include />"
2) যেহেতু আমি এই কাজটি করতে পারছি না তাই আমি প্রতিটি মার্জ লেআউট ফাইলটিতে android:layout_belowপ্রথম TextViewআইটেমটিতে একটি বৈশিষ্ট্য যুক্ত করার চেষ্টা করার সিদ্ধান্ত নিয়েছি , যার অর্থ প্রতিটি মার্জ ফাইলই অন্য একটি মার্জ লেআউট ফাইল থেকে একটি আইডি রেফারেন্স করবে ... বেশিরভাগ অংশের জন্য এটি আসলে কাজ করেছে এবং আমার লেআউটটি ঠিক আছে। যাইহোক, আমি একটি উল্লেখ করে ত্রুটি পেয়েছি android:layout_belowযা বলেছিল যে এটি আমার নির্দিষ্ট করা আইডিটি খুঁজে পাবে না ... আমি ঠিক করেছি কিনা তা নিশ্চিত করতে আইডিকে দ্বিগুণ এবং ট্রিপল পরীক্ষা করেছি। সবচেয়ে অদ্ভুত অংশটি হ'ল আমি AutoFillবৈশিষ্ট্যটি আইডিটিকে প্রথম স্থানে রেখেছি ।
কারও কাছে যদি কোনও পরামর্শ বা কাজের ক্ষেত্র থাকে তবে আমি তাদের চেষ্টা করে দেখতে আরও খুশি হব। এছাড়াও, যদি কেউ আমার জন্য 5 এর পরিবর্তে কেবল একটি মার্জ এক্সএমএল লেআউট ফাইল রাখার কোনও উপায় ভাবতে পারে তবে তা প্রশংসিত হবে। আমি এটি করার কোনও উপায় খুঁজে পাইনি কারণ রানটাইমের সময় আমার একত্রীকরণ লেআউট ফাইলগুলিতে প্রতিটি আইটেমের অ্যাক্সেস থাকা দরকার ...