অ্যান্ড্রয়েডে স্ট্যাটাস বারের রঙ কীভাবে পরিবর্তন করবেন?


427

প্রথমত এটি অ্যানড্রয়েড স্ট্যাটাস বারের পটভূমির রঙ কীভাবে পরিবর্তন করবেন সেভাবে এটি সদৃশ নয়

আমি কীভাবে স্ট্যাটাস বারের রঙ পরিবর্তন করব যা নেভিগেশন বারের মতো হওয়া উচিত।

আমি চাই স্ট্যাটাস বারের রঙটি নেভিগেশন বারের রঙের মতো হোক

এখানে চিত্র বর্ণনা লিখুন


2
এটি সম্ভব কিটক্যাট @ মার্কবুইকিমা
কোডারকেট

4
নীলদের পরামর্শ অনুসারে, ভি 21 কল করার পর থেকে সেখানে একটি থিমে অ্যাট্রিবিউট রয়েছে android:statusBarColor। আপনি কেবল এটিতে যুক্ত করতে পারেন values-v21/styles.xml
লেভাইট

@ মার্কবুইকামা কীভাবে এটি এমনকি মূল অ্যাক্সেসের সাথে সম্পর্কিত!
স্টিভ মোর্টজ

উত্তর:


624

অ্যান্ড্রয়েড 5.0 ললিপপ মেটাল ডিজাইন থিম প্রবর্তন করেছে যা থিমের colorPrimaryDarkমানের ভিত্তিতে স্ট্যাটাস বারকে স্বয়ংক্রিয়ভাবে রঙ করে ।

সংস্করণ 21 থেকে শুরু হওয়া লাইব্রেরি সমর্থন-v7-appcompat এর জন্য এটি ডিভাইস প্রি-ললিপপ ধন্যবাদ জানায় Chris ক্রিস ব্যানসের অ্যাপকম্প্যাট ভি 21 সমর্থন সম্পর্কে ব্লগপোস্ট

এখানে চিত্র বর্ণনা লিখুন

অফিসিয়াল অ্যান্ড্রয়েড বিকাশকারী ওয়েবসাইটে ম্যাটেরিয়াল থিম সম্পর্কে আরও পড়ুন


29
কোনও কারণে colorPrimaryDark বৈশিষ্ট্যটি আমার পক্ষে কাজ করে না। এমুলেটর v21 উপর চেষ্টা
বিপথগামী

3
এটি কাজ করে যে আপনাকে এমুলেটরটিতে পরিবর্তনগুলি লেআউট পূর্বরূপে না দেখে থাকতে হবে [এটি সেখানে দেখায় না]
মিগটিয়ান

6
colorPrimaryDark কোনও API 18 এমুলেটরটিতে আমার জন্য কাজ করছে না। অ্যাপকম্প্যাট সম্পর্কিত লিঙ্কযুক্ত নিবন্ধ থেকে: "পুরানো প্ল্যাটফর্মগুলিতে, অ্যাপকম্প্যাটটি রঙিন থেরিংকে যেখানে সম্ভব সম্ভব তা অনুকরণ করে the
অ্যাডাম জনস

12
স্ট্যাটাস বারে ফন্টের রঙ পরিবর্তন সম্পর্কে কী ? দস্তাবেজগুলি সে সম্পর্কে কিছুই বলে না।
স্কট বিগস 16

আমিও একইভাবে চেষ্টা করেছি। এটি সমস্ত ডিভাইসের বেশিরভাগ ক্ষেত্রে পুরোপুরি কার্যকরভাবে কাজ করে তবে আমার কাছে গ্যালাক্সি এস 4 স্যামসং চলছে ওএস 5.0.1 চলছে এবং এই ফোনে স্ট্যাটাস বারের রঙটি কালো। এবং একবার আমি অন্য ক্রিয়াকলাপে গিয়ে আবার আগের ক্রিয়াকলাপে ফিরে এলে আমার স্ট্যাটাস বারের রঙটি অ্যাপ থিমের রঙে পরিবর্তন করা হয়। যে কারণে এটি হচ্ছে
হিতেশ কামানী

364

হালনাগাদ:

Lollipop:

public abstract void setStatusBarColor (int color)

21 এপিআই স্তরে যুক্ত হয়েছে

অ্যান্ড্রয়েড ললিপপ আরও মগ্ন ব্যবহারকারীর অভিজ্ঞতার জন্য এবং গুগলের সাথে তাল মিলিয়ে আপনার অ্যাপে স্ট্যাটাস বারের রঙ পরিবর্তন করার ক্ষমতা এনেছে Material Design Guidelines

এখানে নতুন window.setStatusBarColorপদ্ধতিটি চালু করে আপনি কীভাবে স্ট্যাটাস বারের রঙ পরিবর্তন করতে পারবেন তা এখানেAPI level 21

স্ট্যাটাস বারের রঙ পরিবর্তন করার জন্য উইন্ডোতে দুটি অতিরিক্ত পতাকা সেট করাও প্রয়োজন; আপনার FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDSপতাকাটি যুক্ত করতে হবে এবং পতাকাটি সাফ করতে হবে FLAG_TRANSLUCENT_STATUS

কাজের কোড:

import android.view.Window;

...

Window window = activity.getWindow();

// clear FLAG_TRANSLUCENT_STATUS flag:
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// add FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS flag to the window
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);

// finally change the color
window.setStatusBarColor(ContextCompat.getColor(activity,R.color.my_statusbar_color));

অফিশিয়াল বিকাশকারী রেফারেন্স: সেটস্ট্যাটাসবারকালার (ইনট)

উদাহরণ: উপাদান-নকশা-সর্বত্র

ক্রিস ব্যানস ব্লগ- অ্যাপকম্প্যাট ভি 21: প্রাক-ললিপপ ডিভাইসের জন্য উপাদান নকশা!

এখানে চিত্র বর্ণনা লিখুন

transitionNameপৃষ্ঠভূমি জন্য হতে হবে android:status:background


2
পিছনের সামঞ্জস্য জন্য কোন সমাধান?
অ্যাডাম হুরউইৎজ

নীলদের উত্তরে যেমন উল্লেখ করা হয়েছে: আপনি android:statusBarColorনিজের values-v21/styles.xmlফাইল প্রতি androiddocs.com/training/matory/theme.html এ সেট করে থিম / স্টাইলের মাধ্যমে স্ট্যাটাস বারের রঙটি কনফিগার করতে পারেন<item name="android:statusBarColor">@color/primary_color</item>
জেএল ওয়েস্ট

4
আমি স্ট্যাটাস বারের রঙ সাদা করতে পারি, তবে আমি বেটারির মতো নোটিফিকেশন আইকনটি দেখতে পাচ্ছি না, আমি কীভাবে এটি সমাধান করব?
এমএনএফএস

1
আপনি ঠিক কীভাবে আমাকে সাহায্য করেছেন আপনার কোনও ধারণা নেই ..
অভিষেক ধ্যানী

222

ললিপপটিতে এটি সক্ষম করতে এটি আপনার মান- v21 / styles.xML রাখুন:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">@color/color_primary</item>
    </style>
</resources>

34
এর জন্য মিনিম এপিআই 21 লাগবে
রোমান

49
সম্ভবত এ কারণেই তিনি এটিকে মান-ভি 21 / স্টাইলস.এক্সএমএল ;-) রাখার পরামর্শ দিয়েছেন এখন পর্যন্ত সবচেয়ে সঠিক উত্তর বলে মনে হচ্ছে !!
লেভাইট

কিন্তু এই এখনও একটি সতর্কতা পতাকা পতাকা !!
নিহাল শর্মা

কম্পাট জন্য কাজ কি? স্থিতি দণ্ড
ব্ল্যাকহক

আপনি targeApiযদি একক শৈলীর ফাইল বজায় রাখতে চান তবে আপনি বৈশিষ্ট্য যুক্ত করতে পারেন । রেফারেন্সের জন্য আমার উত্তরটি পড়ুন স্ট্যাকওভারফ্লো.com
ফয়সাল শায়খ

50

এটি কোনও লাইব্রেরি ছাড়াই এটি করার খুব সহজ উপায়: যদি ওএস সংস্করণটি সমর্থিত না হয় - কিটকাটের অধীনে - তবে কিছুই হ্যাণ্ডড হয় না। আমি এই পদক্ষেপগুলি করি:

  1. আমার এক্সএমএল এ আমি শীর্ষে এই ভিউ যুক্ত করেছি:
<View
        android:id="@+id/statusBarBackground"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

তাহলে আমি এই পদ্ধতিটি তৈরি করেছি:

 public void setStatusBarColor(View statusBar,int color){
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
           Window w = getWindow();
           w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
           //status bar height
           int actionBarHeight = getActionBarHeight();
           int statusBarHeight = getStatusBarHeight();
           //action bar height
           statusBar.getLayoutParams().height = actionBarHeight + statusBarHeight;
           statusBar.setBackgroundColor(color);
     }
}

অ্যাকশন বার ও স্ট্যাটাস বারের উচ্চতা পেতে আপনার এই দুটি পদ্ধতিও প্রয়োজন:

public int getActionBarHeight() {
    int actionBarHeight = 0;
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
       actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }
    return actionBarHeight;
}

public int getStatusBarHeight() {
    int result = 0;
    int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

তারপরে স্ট্যাটাস বারের রঙ নির্ধারণ করার জন্য আপনার কেবলমাত্র এই লাইনের প্রয়োজন:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

1
আমার ভিউ এলিমেন্টটি কোথায় রাখা উচিত? এটি কি মূল বিন্যাসের শীর্ষে থাকা উচিত?
এমিল রেয়া এনরিকিউজ

হ্যাঁ. আপনার এক্সএমএলে এটি শীর্ষে।
itzhar

সতর্কতা: কেবল অ্যান্ড্রয়েড> = 19 এপিআইয়ের জন্য কাজ করা। আমার ক্ষেত্রে আমার 16 থেকে শুরু হওয়া সমর্থন প্রয়োজন
আন্তন কিজেমা

setStatusBarColor (findViewByID (android.R.id.statusBarBackground), getResources () getColor (android.R.color.white)।);
অ্যান্ড্রয়েডল্যাড

34

@ নীলস যেমন বলেছিল আপনাকে মান-ভি 21 / স্টাইল.এক্সএমএল স্থাপন করতে হবে:

<item name="android:statusBarColor">@color/black</item>

tools:targetApi="lollipop"আপনি যদি একক স্টাইলস xx চান তবে যুক্ত করুন :

<item name="android:statusBarColor" tools:targetApi="lollipop">@color/black</item>

3
"টার্গেটএপি" এর জন্য অনেক ধন্যবাদ। আমার থিমটি একাধিক ফাইলের মধ্যে ছড়িয়ে দেওয়া পছন্দ করি না। :)
প্লেক্সাস

31

ঠিক আছে, ইজহার সমাধানটি ঠিক ছিল তবে, ব্যক্তিগতভাবে, আমি এই কোডটি থেকে দূরে থাকার চেষ্টা করছি:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};

পাশাপাশি, আমি কোডও নকল করতে পছন্দ করি না। আপনার উত্তরে আমাকে সমস্ত ক্রিয়াকলাপে এই জাতীয় কোডের লাইন যুক্ত করতে হবে:

setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));

সুতরাং, আমি ইজহার সমাধান নিয়েছি এবং একই ফলাফল পেতে এক্সএমএল ব্যবহার করেছি: স্ট্যাটাসবারের স্ট্যাটাস বারের জন্য একটি বিন্যাস তৈরি করুন_বার.এক্সএমএল

<View xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="@dimen/statusBarHeight"
     android:background="@color/primaryColorDark"
     android:elevation="@dimen/statusBarElevation">

উচ্চতা এবং উচ্চতা বৈশিষ্ট্যগুলি লক্ষ্য করুন, এগুলি নীচে মান, মান-v19, মান-v21 এ সেট করা হবে।

প্রধান_একটিভিটি.এক্সএমএল অন্তর্ভুক্ত ব্যবহার করে আপনার ক্রিয়াকলাপ বিন্যাসে এই বিন্যাসটি যুক্ত করুন:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >

<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout       
</RelativeLayout>

সরঞ্জামদণ্ডের জন্য শীর্ষের মার্জিন বৈশিষ্ট্য যুক্ত করুন:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">

আপনার অ্যাপ্লিকেশন থাই-স্টাইল-v19.xML এবং স্টাইল-v21.xML এ, উইন্ডোটি ট্রান্সলুসেন্ট অ্যাটার যুক্ত করুন:

শৈলী-v19.xML, v21:

<resources>
<item name="android:windowTranslucentStatus">true</item>
</resources>

এবং অবশেষে, আপনার ডাইমেনস, ডাইমেনস-ভি 19, ডাইমেনস-ভি 21-এ, সরঞ্জামদণ্ডের শীর্ষমর্মিনের জন্য মানগুলি এবং স্ট্যাটাসবারের উচ্চতা: dimens.xML কেটকাটের চেয়ে কম পরিমাণে যুক্ত করুন:

<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>

স্ট্যাটাস বারের উচ্চতা হ'ল KitKat এবং তার থেকে উপরে 24dp dimens-v19.xML থাকে:

<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>

ললিপপের জন্য ডাইমেনস-ভি 21.xML, প্রয়োজন হলে কেবল উচ্চতা যুক্ত করুন:

<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>

এটি জেলিবিয়ান কিটকাট এবং ললিপপের জন্য ফলাফল:

এখানে চিত্র বর্ণনা লিখুন


চেক কোডে রাখার পরিবর্তে আপনি এটি এক্সএমএলে রেখেছেন। আপনি যা পেয়েছেন ঠিক তেমনই সমাধান আপনি কিটকেটে কাজ করবেন।
অ্যান্ড্রয়েড বিকাশকারী

26

আপনি এই সাধারণ কোডটি ব্যবহার করতে পারেন:

কোটলিনে ওয়ান-লাইনার:

window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)

জাভা এবং ম্যানুয়াল সংস্করণ চেক সহ আসল উত্তর:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light, this.getTheme()));
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    getWindow().setStatusBarColor(getResources().getColor(R.color.colorAccentDark_light));
}

আপনি এটি ব্যবহার করে আরও সহজ করতে পারেন ContextCompatwindow.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
কোটলিনে

আমি এটি লেখার সময়কালে আমি কোটলিন চেষ্টা করিনি you আপনি উত্তরটি কেন সম্পাদনা করেন না এবং আমি এটি অনুমোদিতও করতে পারি না :)
স্টিভ মোরেটজ

ভাল ধারণা. আমি উত্তরে আমার পরামর্শটিকে ভবিষ্যতের দর্শকদের জন্য একটি সহজ রেফারেন্স হিসাবে অন্তর্ভুক্ত করেছি
সোনাদোরার

স্থিতি বারের রঙটি বিল্ডের উপরে পরিবর্তিত হয়েছে ERS VERSION_CODES.M। ললিপপের নিচে কাজ করছেন না
মুহাম্মদ হারিস

@ মুহাম্মাদ হারিস এটি কাজ করে? আপনি কোটলিন বা জাভা কোড ব্যবহার করেন?
স্টিভ মোরটজ

23

রেজ / মান / স্টাইলস.এক্সএমএলগুলিতে কেবল একটি নতুন থিম তৈরি করুন যেখানে আপনি "colorPrimaryDark" পরিবর্তন করেন যা স্ট্যাটাস বারের রঙ:

<style name="AppTheme.GrayStatusBar" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimaryDark">@color/colorGray</item>
</style>

এবং অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল এর ক্রিয়াকলাপের থিমটি আপনার পছন্দ মতো পরিবর্তন করুন, পরবর্তী ক্রিয়াকলাপে আপনি মূল থিমটি নির্বাচন করে রঙটিকে আবার আগেরটিতে পরিবর্তন করতে পারবেন:

<activity
    android:name=".LoginActivity"
    android:theme="@style/AppTheme.GrayStatusBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

আপনার রেজস / মান / রং.এক্সএমএল দেখতে কেমন হবে:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#c6d6f0</color>
    <color name="colorGray">#757575</color>
</resources>

1
আমি মনে করি এটি সহজতম তবে পরিষ্কার সমাধান। 21 এর ন্যূনতম এপিআই স্তরের দরকার নেই , কেবল সাধারণ ওভাররাইডিং। আরও বেশি ভোটের দাবিদার।
tahsinRupam

নুগাট এবং এপিআই লেভেলটি ১৯ এ সেট করার সময় এটি কাজ করে না It
অ্যান্ড্রয়েড ডেভ

18

উপরের ললিপপের রঙ পরিবর্তন করতে কেবল এটি আপনার স্টাইলস.এক্সএমএলে যুক্ত করুন

<item name="android:statusBarColor">@color/statusBarColor</item>

তবে মনে রাখবেন , আপনি যদি স্ট্যাটাস বারের জন্য হালকা রঙ নিতে চান তবে এই লাইনটিও যুক্ত করুন

<item name="android:windowLightStatusBar">true</item>

1
থ্যাঙ্কস, এটিও কার্যকর উত্তর।
অ্যান্ড্রু বৃদ্ধি

16

আপনি এই ফাংশনটি দিয়ে স্ট্যাটাস বারের রঙ পরিবর্তন করতে পারেন। অ্যান্ড্রয়েড এল এর অর্থ এপিআই 21 এবং উচ্চতর এর উপরে কাজ করে এবং এর মতো রঙের স্ট্রিং দরকার "#ffffff"

private void changeStatusBarColor(String color){
    if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.parseColor(color));
    }
}

15

আমার এই প্রয়োজনীয়তা ছিল: স্ট্যাটাস বারের রঙটিকে স্বচ্ছ রেখে প্রোগ্রামগতভাবে পরিবর্তন করা নেভিগেশন ড্রয়ারটি ট্র্যাপারেন্ট স্ট্যাটাস বারকে ওভারল্যাপিং করে নিজেকে আঁকতে দেওয়ার জন্য ।

আমি এপিআই ব্যবহার করে তা করতে পারি না

getWindow().setStatusBarColor(ContextCompat.getColor(activity ,R.color.my_statusbar_color)

যদি আপনি এখানে স্ট্যাক ওভারফ্লোতে চেক করেন তবে সেই লাইন কোডের আগে স্ট্যাটাস বারটির স্বচ্ছতাটিকে দৃ solid়তার সাথে সেট করে

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)

আমি স্ট্যাটাস বারের মতো রঙ এবং স্বচ্ছতা পরিচালনা করতে সক্ষম :

  • অ্যান্ড্রয়েড 4: আপনি যা করতে পারেন তা তেমন কিছুই নেই, কারণ আপনি এপিআই থেকে স্ট্যাটাস বারের রঙ পরিচালনা করতে পারবেন না ... স্ট্যাটাস বারটি আপনাকে স্বচ্ছ হিসাবে সেট করা এবং আপনার ইউআই এর কোনও রঙিন উপাদানকে স্ট্যাটাসের অধীনে নিয়ে যাওয়া thing দণ্ড। এটি করতে আপনার সাথে খেলতে হবে

    android:fitsSystemWindows="false"

    আপনার প্রধান বিন্যাসে। এটি আপনাকে স্ট্যাটাস বারের নীচে লেআউট আঁকতে সহায়তা করে। তারপরে আপনাকে আপনার মূল বিন্যাসের শীর্ষের সাথে কিছু প্যাডিং দিয়ে খেলতে হবে।

  • অ্যান্ড্রয়েড 5 এবং তারপরের: আপনার সাথে একটি স্টাইল সংজ্ঞায়িত করতে হবে

    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>

    এটি নেভিগেশন ড্রয়ারকে স্ট্যাটাস বারকে ওভারল্যাপ করতে দেয়।

    তারপরে স্ট্যাটাস বারকে স্বচ্ছ রেখে রঙ পরিবর্তন করতে আপনাকে স্ট্যাটাস বারের রঙটি সেট করতে হবে

    drawerLayout.setStatusBarBackgroundColor(ContextCompat.getColor(activity, R.color.my_statusbar_color))

    যেখানে ড্রয়ারলআউটটিকে এভাবে সংজ্ঞায়িত করা হয়

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

এটা আমার জন্য ছাড়া কাজ করে <item name="android:windowDrawsSystemBarBackgrounds">true</item>। যাইহোক, অনুসন্ধানের দিনগুলি পরে, আমি এমন একটি জিনিস পেয়েছি যা সত্যিই কাজ করে (মুহুর্তের জন্য কেবলমাত্র ললিপপটিতে পরীক্ষিত)। ধন্যবাদ
ডেনিসজিএল

আমার একই সমস্যা ছিল এবং আপনার উত্তর আমাকে এটি সমাধান করতে সহায়তা করেছিল।
এ.গুন

7

আপনি স্ট্যাটাস বার হতে চান এমন রঙের মানগুলিতে color.xml এ colorPrimary সম্পাদনা করুন। উদাহরণ স্বরূপ:

   <resources>
<color name="colorPrimary">#800000</color> // changes the status bar color to Burgundy
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="red">#FF0000</color>
<color name="white">#FFFFFF</color>
<color name="cream">#fffdd0</color>
<color name="burgundy">#800000</color>


7

স্ট্যাটাস বারের রঙ পরিবর্তন করতে res/values-v21/styles.xmlএবং স্ট্যাটাস বারের রঙে যান

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light">
        <item name="colorPrimary">@color/color_primary</item>
        <item name="colorPrimaryDark">@color/color_secondary</item>
        <item name="colorAccent">@color/color_accent</item>
        <item name="android:statusBarColor">#0000FF</item>
    </style>
</resources>

আরে, আপনি আমাকে সাহায্য করতে পারেন? অ্যান্ড্রয়েড সম্পর্কে আমার কোনও ধারণা নেই এবং আমি এখনই শিখতে শুরু করতে পারি না। আমার কাছে একটি সাধারণ অ্যাপের জাদুকরী একটি এইচটিএমএল ফাইল চালায়। আমি স্ট্যাটাস বারের রঙ পরিবর্তন করতে মারা যাচ্ছি কারণ # 000 এ উপরে এবং নীচে আমার প্যালেটটি ভয়ঙ্কর। তবে আমি কেবল পারি না, এমনকি আমি স্টাইলস। এক্সএমএল ফাইলও খুঁজে পাই না ... যদি আমি আপনাকে আমার এপিপি পাঠাতে পারি এবং আপনি এটি আমার কাছে সেট করেন আমি কৃতজ্ঞ হব!
থিয়াগো সৌব্রা

6

আপনি যদি স্ট্যাটাস বারের রঙটি প্রোগ্রামিকভাবে পরিবর্তন করতে চান (এবং সরবরাহ করেছেন ডিভাইসে অ্যান্ড্রয়েড 5.0 রয়েছে)। স্ট্যাটাস বারকলারকে কোনও ক্রিয়াকলাপ থেকে পরিবর্তন করার খুব সহজ উপায় এবং খুব সহজ পদ্ধতি যখন ভিন্ন ভিন্ন টুকরোগুলির স্ট্যাটাস বারের রঙ থাকে।

 /**
 * @param colorId id of color
 * @param isStatusBarFontDark Light or Dark color
 */
fun updateStatusBarColor(@ColorRes colorId: Int, isStatusBarFontDark: Boolean = true) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val window = window
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        window.statusBarColor = ContextCompat.getColor(this, colorId)
        setSystemBarTheme(isStatusBarFontDark)
    }
}

/** Changes the System Bar Theme.  */
@RequiresApi(api = Build.VERSION_CODES.M)
private fun setSystemBarTheme(isStatusBarFontDark: Boolean) {
    // Fetch the current flags.
    val lFlags = window.decorView.systemUiVisibility
    // Update the SystemUiVisibility depending on whether we want a Light or Dark theme.
    window.decorView.systemUiVisibility = if (isStatusBarFontDark) lFlags and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() else lFlags or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
}

5

আপনি যদি অ্যান্ড্রয়েড ৪.৪ বা তার বেশি কাজ করতে চান তবে এটি ব্যবহার করে দেখুন। আমি হরপ্রীতের উত্তর এবং এই লিঙ্কটি উল্লেখ করি। অ্যান্ড্রয়েড এবং স্বচ্ছ স্থিতি দণ্ড

প্রথমে অ্যাক্টিভিটির অনক্রিয়েট পদ্ধতিতে সেটস্ট্যাটাসবারকার্ড পদ্ধতিতে কল করুন (আমি এটি একটি ব্যবহার শ্রেণিতে রেখেছি)। আমি এখানে একটি চিত্র ব্যবহার করি, আপনি একটি রঙ ব্যবহার করতে এটি পরিবর্তন করতে পারেন।

public static void setStatusBarColored(Activity context) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    {
        Window w = context.getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        int statusBarHeight = getStatusBarHeight(context);

        View view = new View(context);
        view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        view.getLayoutParams().height = statusBarHeight;
        ((ViewGroup) w.getDecorView()).addView(view);
        view.setBackground(context.getResources().getDrawable(R.drawable.navibg));
    }
}

public static int getStatusBarHeight(Activity context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}

আগে: আগে

পরে: পরে

স্ট্যাটাস বারের রঙ পরিবর্তন করা হয়েছে, তবে নাভি বারটি কেটে গেছে, সুতরাং আমাদের ওনক্রিট পদ্ধতিতে নাভি বারের মার্জিন বা অফসেট সেট করা দরকার।

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT, (int)(this.getResources().getDimension(R.dimen.navibar_height)));
        layoutParams.setMargins(0, Utils.getStatusBarHeight(this), 0, 0);

        this.findViewById(R.id.linear_navi).setLayoutParams(layoutParams);
    }

তারপরে স্ট্যাটাস বারটি এর মতো দেখতে পাবেন।

স্ট্যাটাস বার


4

কিটকেটে এবং ভাল ফলাফল সহ এটিই আমার পক্ষে কাজ করেছিল।

public static void setTaskBarColored(Activity context) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
        {
            Window w = context.getWindow();
            w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            //status bar height
            int statusBarHeight = Utilities.getStatusBarHeight(context);

            View view = new View(context);
            view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            view.getLayoutParams().height = statusBarHeight;
            ((ViewGroup) w.getDecorView()).addView(view);
            view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
        }
    }

2

আরও একটি সমাধান:

final View decorView = w.getDecorView();
View view = new View(BaseControllerActivity.this);
final int statusBarHeight = UiUtil.getStatusBarHeight(ContextHolder.get());
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight));
view.setBackgroundColor(colorValue);
((ViewGroup)decorView).addView(view);

স্ট্যাটাস বারটি স্ক্রিনের নীচে রয়েছে এমন ট্যাবলেটগুলিতে এটি কী কাজ করবে?
gc

6
এখানে 'ডাব্লু' এবং 'ইউআইটিইটি' কী?
মানব পাটাদিয়া

2

পরিবর্তন colorPrimaryDark মাঝামাঝি / মান / styles.xml ফাইলে আপনার ইচ্ছা রঙ

    <resources>
        <color name="colorPrimary">#800000</color>
        <color name="colorPrimaryDark">#303F9F</color> //This Line
        <color name="colorAccent">#FF4081</color>
        <color name="red">#FF0000</color>
        <color name="white">#FFFFFF</color>
       <color name="cream">#fffdd0</color>
       <color name="burgundy">#800000</color>
    </resources>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.