چالش اسنک بار ( حل شد ) + آموزش اسنک بار
سلام
من یه چالش تو اسنک بار دارم و خواستم از زمان استفاده کنم و هم اسنک بار رو آموزش بدم برای دوستانی که بلد نیستن و هم سوالم رو بپرسم
اول سوال:
همونطور که می دونین در اسنکبار شما میتونین یه اکشن ست کنین تا بر روش کلیک شه و یه عملی انجام شه و از اونجایی که من اسنک بار نوع زمان زیاد رو انتخاب کردم میخوام اگه روی اون اکشن کلیک شد یه کاری رو انجام بدم که مشخصه و حالا اگه کلیک نشد یه کاری رو انجام بده که اینو نمیدونم چجوریه و خواهش می کنم اگه کسی میدونه تکه کد بده ممنون.





و حالا آموزش
برای ست کردن اسنک بار شما نیاز به coordinatorlayout دارین
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.design.widget.CoordinatorLayout>
البته با پرسش هایی که از دوستان کردم گفتن که باید کل لایوت زیر مجموعه coordinatorlayout باشه ولی من همین تکه کد رو نوشتم تو لایه و مشکلم حل شد.
که البته با این کار اسنک بارتون انیمیت نمیشه :دی. ولی من واسه تست می خواستم پس شما کلا لایه رو باهاش بسازین
نکته: برای استفاده از اسنک بار نیاز به کتابخونه متریال دارین که برای این کار در گردل باید این کد رو اضافه کنید.
اونایی که بلد نیستن باید بزارینش همونجایی که junit رو پاک می کنین. البته اگر پاک می کنین:)
compile 'com.android.support:design:23.4.0'
و حالا برای ساخت اسنک بار کافیه coordinatorlayout رو که ساختین و بهش id دادین رو در جاوا معرفی و اسنک بارتون رو بسازین
به شکل زیر
CoordinatorLayout coordinatorLayout = (CoordinatorLayout) findViewById(R.id.coordinator);
Snackbar snackbar = Snackbar.make(coordinatorLayout, "مایل به برقراری ارتباط با اینترنت هستید؟",
Snackbar.LENGTH_LONG)
.setAction("اقدام کن", new View.OnClickListener() {
@Override
public void onClick(View v) {
// like toast or ....
}
});
snackbar.setActionTextColor(Color.RED); // این رنگ اکشن رو مشخص می کنه
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text);
textView.setTextColor(Color.parseColor("#ebc95e")); // رنگ متن اسنک بار مشخص می شود.
snackbar.show();
// LENGTH_INDEFINITE برای کامل می مونه
//LENGTH_SHORT و LENGTH_LONG هم که مشخصه
همین دیگه زیاد کار سختی نیست. :)
لطفا منو هم کمک کنین که مشکلم حل شه ممنون

سلام.
امیدوارم با این کدا مشکلتون حل بشه :)
private boolean isClicked = false ;
private Snackbar snackBar;
snackBar = Snackbar.make(toolbar,"No Internet Connection!", Snackbar.LENGTH_LONG);
snackBar.setAction("Retry",new View.OnClickListener(){
@Override
public void onClick(View v){
snackBarClicked();
}
});
snackBar.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
super.onDismissed(snackbar, event);
if(!isClicked){
snackBarNotClicked();
}
}
@Override
public void onShown(Snackbar snackbar) {
super.onShown(snackbar);
}
});
public void showSnackBar(View view) {
isClicked = false;
snackBar.show();
}
private void snackBarClicked(){
isClicked = true;
Toast.makeText(MainActivity.this,"SnackBar Clicked",Toast.LENGTH_LONG).show();
// Other Codes
}
private void snackBarNotClicked(){
Toast.makeText(MainActivity.this,"SnackBar Not Clicked",Toast.LENGTH_LONG).show();
// Other Codes
}
من تو کد بالا موقع ساخت SnackBar عمدا تولبار رو به عنوان پارامتر اول پاس دادم!!!
اما باید از CoordinatorLayout استفاده کرد چون یه سری قابلیت هارو برای کار با SnackBar بهمون میده...

با تشکر از آقا سامان عزیز من جوابم رو گرفتم.
و اینکه در جوابشون نکاتی بود که اونا رو هم اینجا قرار می دوم تا دوستان دیگه هم بدونند.
name: 'onActionTouchTap',
header: 'function(e)',
desc: '//برای لحضه کلیک شدن اکشن باتن کلیک .'
},
{
name: 'onDismiss',
header: 'function()',
desc: 'زمان رد شدن اسنک بار می توانید استفاده کنید.'
},
{
name: 'onShow',
header: 'function()',
desc: 'زمان نمایش اسنک بار می توانید استفاده کنید..'
}
]
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .