آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

همرنگ کردن نوار Status با خود برنامه(حل شد)

Ali asqar akhavan mahdavi  9 سال پیش  9 سال پیش
+1 0

سلام دوستان.من یک اپ دارم که میخوام مثل شکل زیر نوار status رو همرنگ خود برنامه کن.این کارو با تغییر رنگ Color Primary Dark کردم ولی فایده ای نداشت.خیلی برام مهمه.ممنونم

 برای این سوال 3 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
Criss  9 سال پیش
+4 0

این رو استفاده کنید :

    public static void statusBar(Activity activity, String color) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = activity.getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.parseColor(color));

            window.setNavigationBarColor(Color.parseColor(color));
        }
    }
+1 0
ممنون دوست عزیز.اما نشد برای فراخوانی تابعی که دادین من ابتدای اکتیویتی ازین کد استفاده کردم 'statusBar(MainActivity.this, "#faafff");' (9 سال پیش)
+1 0
ممنون میشم پاسخ بدین statusBar(MainActivity.this, "#faafff"); (9 سال پیش)
0 0
این کد فقط برای اندروید های 5 LOLLIPOP به بالا اجرا میشه به NavigationBar و StatusBar رنگ ست میشه (9 سال پیش)
0 0
در پاسخ پایینی برای اندروید 4 هم نوشتم کدشو و تست هم شده. میتونین در صورت نیاز از اون استفاده کنین (9 سال پیش)
پاسخ به سوال 
sami  9 سال پیش
+3 0

سلام.

از این متد استفاده کنید :

 private void changeStatusBarColor(int color) {

if (Build.VERSION.SDK_INT >= 21) {
Window window = this.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(this, color));

}

همون متد بالاست،فقط یه خطش با اون یکی فرق می کنه.

 

0 0
ممنون عزیز.ورودیش از نوع int ولی من چجوری باید بهش رنگ بدم؟ (9 سال پیش)
+1 0
خواهش می کنم.خب یه راهش اینه که رنگ مورد نظرتونو توی فایل color.xml ذخیره کنید و بعدش بعنوان ورودی متد مثلا این مقدار رو R.color.statusBarColor پاس کنید. (9 سال پیش)
0 0
دوست عزیز بازم نشد.چیکار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ای خداااااااا (9 سال پیش)
+1 0
من خودم از این متد قبلا استفاده کردم و مطمئنا درست کار می کنه.فقط باید حواستون به این باشه که این حالت فقط روی اندروید لالی پاپ به بعد کار می کنه.یعنی اگه شما این کد رو تو برنامه تون استفاده کنید وقتی این برنامه، روی اندروید با شماره api کمتر از 21 اجرا بشه،تغییری رخ نمیده اما اگه رو اندروید 21 به بالا اجرا بشه،نتیجه مورد نظرو خواهید دید. (9 سال پیش)
+1 0
اها.بازم ممنون.واسه من که تغییری نکرد. اما حتما کد دیگه ای هم وجود داره که برای همه اجرا بشه.آخه نرم افزار کافه بازار هم این کار رو کرده و روی گوشی من تغییر رنگش اعمال میشه (9 سال پیش)
0 0
خواهش می کنم.بهرحال از api 21 به بعد امکان سفارشی سازی statusbar فراهم شده.من قبلا نرم افزار بازارو، رو اندروید 4.2 تست کردم و همانطور که انتظار می رفت تغییری توی statusbar نداده بود،اما آپدیت جدیدشو نمیدونم. (9 سال پیش)
0 0
setNavigationBarColor اون خطی که اضافه هست برای گوشی های اندروید مانند HTC هست که قسمت Navigation در پایین صفحه قرار داره و میشه به اون قسمت هم رنگ داد (9 سال پیش)
پاسخ به سوال 
Ali asqar akhavan mahdavi  9 سال پیش
+6 0

 پاسخ صحیح

ممنون از همگی.بالاخره بعد از سالها ;-) تحقیق تونستم پیداش کنم البته با کمک شما دوستان.حالا نظر دادنش با شما اساتید...

 
   public  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);

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


View view = new View(context);
view.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
view.getLayoutParams().height = result;
((ViewGroup) w.getDecorView()).addView(view);
view.setBackgroundColor(context.getResources().getColor(R.color.colorPrimaryTaskBar));
}
}
+1 0
آفرین،خیلی خوبه که دست از تلاش برنداشتی،ظاهرا این یکی روی kitkat هم جواب میده. (9 سال پیش)
+1 0
خیلی خوبه دستت درد نکنه که کد رو گذاشتی تا بقیه هم استفاده کنن.ولی یه ایرادی داره. بیشتر لایه بالایی من رو میبره داخل و نمیدونم چرا این اتفاق میفته (9 سال پیش)
+1 0
قربونت. اره حق باتویه. من تست کردم. در صورتی که toolbar داشته باشیم و از toolbar پیش فرض استفاده کنیم، مشکلی نداره، در غیر این صورت مقداری از صفحه اصلی میره زیر نوار status (9 سال پیش)
0 0
اقا دیگه ایندفعه درستش کردم ببین این کد رو بذار توی اکتیویتی که به toolbar فاصله بده از بالا. ` LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(t.getLayoutParams()); lp.setMargins(0, s , 0, 0); t.setLayoutParams(lp); ` *s همون result توی تابع هست* (9 سال پیش)
0 0
` LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(t.getLayoutParams()); lp.setMargins(0, s , 0, 0); t.setLayoutParams(lp); ` (9 سال پیش)
0 0
` LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(t.getLayoutParams()); lp.setMargins(0, s , 0, 0); t.setLayoutParams(lp);` (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .