উপরের সমস্ত উত্তর একই মৌলিক ধারণাটির চারদিকে প্রচারিত হয় এবং আপনি উপরের উদাহরণগুলির মধ্যে একটি ব্যবহার করে এটি সাধারণ বিন্যাসের সাথে কাজ করতে পারেন। তবে আমি 'পূর্ণ স্ক্রিন' (ট্যাব বার একপাশে) টুকরা নেভিগেশন স্লাইডিংয়ের সময় এবং নিয়মিত নেভিগেশন, ট্যাব এবং অ্যাকশন বারগুলি বজায় রাখতে পটভূমির রঙ পরিবর্তন করতে চেয়েছিলাম।
আন্তন হ্যাডটস্কির একটি নিবন্ধটি মনোযোগ সহকারে পড়ার পরে আমি বুঝতে পারছিলাম যে কী চলছে।
আমার DrawerLayoutসাথে ConstraintLayout(অর্থাত্ পাত্রে) যা রয়েছে Toolbar, মূল খণ্ডটি অন্তর্ভুক্ত করে এবং BottomNavigationView।
সেট DrawerLayoutথাকার fitsSystemWindowsসত্যতে যথেষ্ট নয়, আপনি উভয় সেট করতে হবে DrawerLayoutএবং ConstraintLayout। স্বচ্ছ স্ট্যাটাস বার ধরে, স্ট্যাটাস বারের রঙ এখন এর পটভূমির রঙের মতো ConstraintLayout।
তবে অন্তর্ভুক্ত থাকা খণ্ডটিতে এখনও স্ট্যাটাস বারটি অন্তর্নির্মিত রয়েছে, সুতরাং শীর্ষে থাকা আরও একটি 'পূর্ণ স্ক্রিন' টুকরাটি অ্যানিমেট করে স্থিতি বারটির রঙ পরিবর্তন করে না।
মধ্যে উল্লেখ করা নিবন্ধ থেকে কোড একটি বিট Activityএর onCreate:
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.container)) { view, insets ->
insets.replaceSystemWindowInsets(
insets.systemWindowInsetLeft,
0,
insets.systemWindowInsetRight,
insets.systemWindowInsetBottom
)
}
এবং সমস্ত ভাল, এখন ব্যতীত Toolbarস্ট্যাটাস বারের উচ্চতার বিষয়টি চিহ্নিত করে না। আরও কিছু নিবন্ধটি উল্লেখ করে এবং আমাদের একটি সম্পূর্ণ কার্যক্ষম সমাধান রয়েছে:
val toolbar = findViewById<Toolbar>(R.id.my_toolbar)
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.container)) { view, insets ->
val params = toolbar.layoutParams as ViewGroup.MarginLayoutParams
params.topMargin = insets.systemWindowInsetTop
toolbar.layoutParams = params
insets.replaceSystemWindowInsets(
insets.systemWindowInsetLeft,
0,
insets.systemWindowInsetRight,
insets.systemWindowInsetBottom
)
}
মূল_অ্যাক্টিভিটি.এক্সএমএল (দয়া করে মনে রাখবেন মার্জিনটপ ইন Toolbarপূর্বরূপ উদ্দেশ্যে, এটি কোড দ্বারা প্রতিস্থাপন করা হবে):
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/green"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/my_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintTop_toTopOf="@id/container"
android:layout_marginTop="26dp"
android:background="@android:color/transparent"
...>
...
</androidx.appcompat.widget.Toolbar>
<include layout="@layout/content_main" />
...
</androidx.constraintlayout.widget.ConstraintLayout>
...
</androidx.drawerlayout.widget.DrawerLayout>
android:fitsSystemWindows="true"করেছি এবং তারপরে আমার কার্যকলাপ_মাইন.এক্সএমএলে যুক্ত করেছি। সিস্টেম বারগুলি স্বচ্ছ নয় এবং স্বচ্ছ নয়।