উত্তর:
সবচেয়ে সহজ উপায়টি হল যাতে আপনার এক্সএমএল ফাইলটিতে ভিউগুলি যুক্ত করা হয় সেটির দিকে মনোযোগ দেওয়া। ফাইলে নীচে নামার অর্থ জেড-অক্ষে উচ্চতর হওয়া।
সম্পাদনা করুন: এটি অ্যান্ড্রয়েড বিকাশকারী সাইটে এখানে এবং এখানে ডকুমেন্টেড রয়েছে । (ধন্যবাদ @ ফ্লাইটপ্ল্যানার)
দয়া করে মনে রাখবেন, এপিআই 21 এবং ততোধিকের বোতাম এবং অন্যান্য উপাদানগুলির উচ্চতর উচ্চতা রয়েছে এবং তাই প্যারেন্ট লেআউট নির্বিশেষে উপাদানগুলির xML ক্রমটিকে উপেক্ষা করুন। আমাকে এটি বের করতে কিছুক্ষণ লাগল।
অ্যান্ড্রয়েডে এপিআই লেভেল ২১ থেকে শুরু করে, লেআউট ফাইলের আইটেমগুলি সঠিক উত্তর হিসাবে বর্ণিত হিসাবে ফাইলের মধ্যে কীভাবে অর্ডার করা হয় সেগুলি থেকে উভয়ই তাদের জেড অর্ডার পেয়ে থাকে এবং তাদের উচ্চতা থেকে উচ্চতর উচ্চতার মান মানে আইটেমটি উচ্চতর জেড অর্ডার পায় ।
এটি কখনও কখনও সমস্যার সৃষ্টি করতে পারে, বিশেষত বোতামগুলির সাথে প্রায়শই আইটেমের শীর্ষে প্রদর্শিত হয় যা এক্সএমএলের ক্রম অনুসারে জেড ক্রমে তাদের নীচে থাকা উচিত। এটি ঠিক করতে android:elevation
আপনার লেআউট XML- এ থাকা আইটেমগুলির মধ্যে কেবলমাত্র যে জেড অর্ডারটি অর্জন করতে চান তার সাথে মেলে।
আমি আপনি বিন্যাসে কোনও উপাদানের একটি উচ্চতা সেট করেছি এটি একটি ছায়া castালাই শুরু করবে। আপনি যদি এই প্রভাবটি না চান তবে আপনি কোডের মতো ছায়া সরিয়ে ফেলতে পারেন:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
myView.setOutlineProvider(null);
}
এক্সএমএল বিন্যাসের মাধ্যমে একটি উন্নত দৃশ্যের ছায়া সরিয়ে নেওয়ার কোনও উপায় আমি খুঁজে পাইনি।
android:elevation="1000dp"
। কোনও ছায়া এইভাবে রেন্ডার করা হয় না।
আমি একই সমস্যার মুখোমুখি হয়েছি: আপেক্ষিক বিন্যাসে প্যারেন্টভিউতে আমার 2 শিশু চাইল্ডভিউ 1 এবং চাইল্ডভিউ 2 রয়েছে। প্রথমে, আমি চাইল্ডভিউ 1 কে চাইল্ডভিউ 2 এর উপরে রেখেছি এবং আমি চাই চাইল্ডভিউ 1 চাইল্ডভিউ 2 এর শীর্ষে থাকুক। বাচ্চাদের দৃষ্টিভঙ্গির ক্রম পরিবর্তন করা আমার পক্ষে সমস্যার সমাধান করেনি। আমার জন্য যা কাজ করেছে তা হ'ল অ্যান্ড্রয়েড সেট করা : ক্লিপচিল্ডেন = পিতামাতার ভিউতে "মিথ্যা" এবং আমি যে কোডটি সেট করেছি:
childView1.bringToFront();
parentView.invalidate();
child.bringToFront()
সঙ্গে parent.invalidate()
কাজ, কিন্তু parent.bringChildToFront(child)
না। আমরা সমস্ত ওএস থেকে যে যুক্তিটি আশা করি তা কোথায়?
android:clipChildren="false"
কৌতুকটি করলেন। ধন্যবাদ!
দয়া করে নোট করুন যে আপনি view.setZ(float)
API স্তর 21 থেকে শুরু করে ব্যবহার করতে পারেন Here এখানে আপনি আরও তথ্য পেতে পারেন।
ভেবেছিলাম আমি প্রবর্তনের পর থেকে একটি উত্তর যুক্ত করব
অ্যান্ড্রয়েড translationZ
এক্সএমএল ক্ষেত্রগুলি জিনিসগুলিকে বাজেভাবে পরিবর্তন করেছে। অন্যান্য উত্তরগুলি দৌড়ানোর পরামর্শ দেয়
childView1.bringToFront();
parentView.invalidate();
এক্সপিসে সম্পূর্ণরূপে স্পট রয়েছে যে এক্সএমএল ফাইলটিতে এই কোডটি হার্ডকোডযুক্ত অ্যান্ড্রয়েড: ট্রান্সলেশনজেডের সাথে কোনও ভিউয়ের সামনে চাইল্ডভিউ 1 আনবে না। আমার এটি নিয়ে সমস্যা ছিল এবং আমি একবার এই ক্ষেত্রটিকে অন্য মতামত থেকে সরিয়ে ফেললে, টোটোফ্রন্ট () ঠিক কাজ করেছিল।
elevation
এপিআই 21 আছে view.setElevation(float)
বিল্ট-ইন রয়েছে
ব্যবহার ViewCompat.setElevation(view, float);
পিছনে সামঞ্জস্যের জন্য
আরও পদ্ধতি ViewCompat.setZ(v, pixels)
এবংViewCompat.setTranslationZ(v, pixels)
আরেকটি উপায়ে বোতাম সংগ্রহ করুন বা অ্যারে দেখুন এবং addView
রিলেটিভ লাইআউট যুক্ত করতে ব্যবহার করুন
চাইল্ডভিউ.আরবিংটোফ্রন্ট () আমার পক্ষে কাজ করে নি, তাই আমি সর্বশেষে যুক্ত হওয়া আইটেমের জেড অনুবাদ (অন্য যে সমস্ত শিশুদের উপর চাপ দিচ্ছিল) এর মতো নেতিবাচক মান হিসাবে সেট করেছি:
lastView.setTranslationZ(-10);
আরও জানতে https://deلافer.android.com/references/android/view/View.html#setTranslationZ(float) দেখুন
আপনি RelativeLayout
পুনরায় সংজ্ঞায়িত সহ কাস্টম ব্যবহার করতে পারেন
protected int getChildDrawingOrder (int childCount, int i)
সচেতন থাকুন - এই পদ্ধতিটি i
"আমার কোন দৃষ্টিভঙ্গিটি আঁকানো উচিত" হিসাবে পরম লাগে i'th
। এভাবেই ViewPager
কাজ করে। এটি সাথে কঙ্কুলেশন কাস্টম অঙ্কন অর্ডার সেট করে PageTransformer
।
এক্সএমএল এর একটির ভিউতে আপনার কোনও উচ্চতা আছে কিনা তা পরীক্ষা করে দেখুন। যদি তা হয় তবে অন্য আইটেমটিতে এলিভেশন যুক্ত করুন বা সমস্যাটি সমাধান করতে উচ্চতা সরিয়ে দিন। সেখান থেকে এটি দর্শনের ক্রম যা অন্যের উপরে যা আসে তার নির্দেশ দেয়।