ممنون دوست عزیز.اما نشد
برای فراخوانی تابعی که دادین من ابتدای اکتیویتی ازین کد استفاده کردم
'statusBar(MainActivity.this, "#faafff");'
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
همرنگ کردن نوار Status با خود برنامه(حل شد)
مدیریت گفتگو
پاسخها 3
مشاهده پاسخ صحیحاین رو استفاده کنید :
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));
}
}
نظرات
ممنون میشم پاسخ بدین
statusBar(MainActivity.this, "#faafff");این کد فقط برای اندروید های 5 LOLLIPOP به بالا اجرا میشه به NavigationBar و StatusBar رنگ ست میشه
در پاسخ پایینی برای اندروید 4 هم نوشتم کدشو و تست هم شده. میتونین در صورت نیاز از اون استفاده کنین
سلام.
از این متد استفاده کنید :
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));
}
همون متد بالاست،فقط یه خطش با اون یکی فرق می کنه.
نظرات
ممنون عزیز.ورودیش از نوع int ولی من چجوری باید بهش رنگ بدم؟
خواهش می کنم.خب یه راهش اینه که رنگ مورد نظرتونو توی فایل color.xml ذخیره کنید و بعدش بعنوان ورودی متد مثلا این مقدار رو
R.color.statusBarColor پاس کنید.دوست عزیز بازم نشد.چیکار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ای خداااااااا
من خودم از این متد قبلا استفاده کردم و مطمئنا درست کار می کنه.فقط باید حواستون به این باشه که این حالت فقط روی اندروید لالی پاپ به بعد کار می کنه.یعنی اگه شما این کد رو تو برنامه تون استفاده کنید وقتی این برنامه، روی اندروید با شماره api کمتر از 21 اجرا بشه،تغییری رخ نمیده اما اگه رو اندروید 21 به بالا اجرا بشه،نتیجه مورد نظرو خواهید دید.
اها.بازم ممنون.واسه من که تغییری نکرد. اما حتما کد دیگه ای هم وجود داره که برای همه اجرا بشه.آخه نرم افزار کافه بازار هم این کار رو کرده و روی گوشی من تغییر رنگش اعمال میشه
خواهش می کنم.بهرحال از api 21 به بعد امکان سفارشی سازی statusbar فراهم شده.من قبلا نرم افزار بازارو، رو اندروید 4.2 تست کردم و همانطور که انتظار می رفت تغییری توی statusbar نداده بود،اما آپدیت جدیدشو نمیدونم.
setNavigationBarColor اون خطی که اضافه هست برای گوشی های اندروید مانند HTC هست که قسمت Navigation در پایین صفحه قرار داره و میشه به اون قسمت هم رنگ داد
پاسخ صحیح
ممنون از همگی.بالاخره بعد از سالها ;-) تحقیق تونستم پیداش کنم البته با کمک شما دوستان.حالا نظر دادنش با شما اساتید...
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));
}
}
نظرات
آفرین،خیلی خوبه که دست از تلاش برنداشتی،ظاهرا این یکی روی kitkat هم جواب میده.
خیلی خوبه دستت درد نکنه که کد رو گذاشتی تا بقیه هم استفاده کنن.ولی یه ایرادی داره. بیشتر لایه بالایی من رو میبره داخل و نمیدونم چرا این اتفاق میفته
قربونت. اره حق باتویه. من تست کردم. در صورتی که toolbar داشته باشیم و از toolbar پیش فرض استفاده کنیم، مشکلی نداره، در غیر این صورت مقداری از صفحه اصلی میره زیر نوار status
اقا دیگه ایندفعه درستش کردم
ببین این کد رو بذار توی اکتیویتی که به toolbar فاصله بده از بالا.
`
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(t.getLayoutParams());
lp.setMargins(0, s , 0, 0);
t.setLayoutParams(lp);
`
*s همون result توی تابع هست*
`
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(t.getLayoutParams());
lp.setMargins(0, s , 0, 0);
t.setLayoutParams(lp);
`
` LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(t.getLayoutParams());
lp.setMargins(0, s , 0, 0);
t.setLayoutParams(lp);`
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام

نظرات