توی XML بین اتربیوت های یک تگ نمیشه کامنت گذاشت. یعنی اندروید استودیو نمیذاره این کارو انجام بدیم.
کامنت حتما باید خارج از تگ باشه.
توی XML بین اتربیوت های یک تگ نمیشه کامنت گذاشت. یعنی اندروید استودیو نمیذاره این کارو انجام بدیم.
کامنت حتما باید خارج از تگ باشه.
بنده با یک چالش جدید در پرمیشن رو به رو شدم و اونم چیزی نیست جز shouldShowRequestPermissionRationale!
تا قبل از این ازش استفاده نمیکردم ولی باید استفاده کنم. کدی که مینویسم در نهایت برای همه جا قابل استفاده هست.
وقتی برای اولین بار باکس پرمیشن نشون داده میشه این متد false میده. توی این باکس یه تیکی هست که میگه دیگه این پرمیشن رو نشون نده. اگر کاربر این تیک رو بزنه دیگه باکس پرمیشن رو نشون نمیده و باید از طریق ستینگ پرمیشن رو enable کنه. در این حالت این متد false میده. ولی اگر این تیک رو نزنه این متد true میده.
برای پیاده سازی این ویو حتما باید از drawerlayout استفاده بشه.
کد XML: (به اتریبیوت های هایلایت شده دقت شود)
اگر دو تا toast پشت سر هم داشته باشیم، یک پشته (queue) تشکیل میشه و پس از نشون دادن اولی، دومی اجرا میشه.
اما اسنک بار اینجوری نیست. اگر دو تا پشت سر هم بذاریم دومی اجرا میشه فقط
برای اینکه یک صفی از اسنک بارها ایجاد کنیم به صورت زیر کد میزنیم:
Snackbar snackbar = Snackbar.make(view, "salam", Snackbar.LENGTH_SHORT);
snackbar.addCallback(new BaseTransientBottomBar.BaseCallback<Snackbar>() {
@Override
public void onDismissed(Snackbar transientBottomBar, int event) {
Snackbar.make(view, "bye...bye", Snackbar.LENGTH_SHORT).show();
}
});
snackbar.show();
برای اسنک بار اول یک کال بک ایجاد شده و اسنک بار دوم رو توش تعریف کردیم.
پس از تموم شدن مدت نشون دادن اولی، دومی اجرا میشه.
همان طور که مستحضر هستید، آیتم های منوی پاپ آپ نمیتونن آیکون داشته باشن. برای حل این موضوع، یک آیتم برای منو میسازیم و به آیکونش وکتور سه نقطه میدیم. توی این آیتم یک زیر منو تعریف میکنیم. به صورت زیر:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="menu"
android:id="@+id/main_menu_two"
android:icon="@drawable/ic_more_vert"
app:showAsAction="always">
<menu>
<item android:title="item 1"
android:icon="@drawable/ic_favorite"/>
<item android:title="item 2"
android:icon="@drawable/ic_favorite"/>
<item android:title="item 3"
android:icon="@drawable/ic_favorite"/>
<item android:title="item 4"
android:icon="@drawable/ic_favorite"/>
</menu>
</item>
</menu>
خروجی:
مثل منوی پاپ آپ، توی فایل XML منو، کد زیر رو مینویسیم:
<item
android:icon="@drawable/ic_search"
android:title="search"
android:id="@+id/search"
app:actionViewClass="androidx.appcompat.widget.SearchView"
app:showAsAction="always" />
این اتریبیوت باید برای childهای مستقیم coordinator layout تعریف بشه. مثلا اگر برای nestedScrollView بعد از appBar بذاریم، باعث میشه ویوها رو بعد از appBar قرار بده. اگر نباشه، ویوها از اول صفحه قرار میگیرن.
تا الآن برای nestedScrollView که بعد از appBar قرار گرفته و bottomSheet این اتریبیوت رو تعریف کردم.
نکته: برای coordinator layout، اسکرول ویو کار نمیکنه! حتما باید nestedScrollView تعریف بشه.
میشه برای بک گراند لیوت (یا ویو - ولی لیوت روت بهتره، چون برای همه ویوهای چایلد اعمال میشه) اتریبیوت زیر رو تعریف کرد: (البته باید ویو clickable باشه)
android:background="?android:attr/selectableItemBackground"
اینجوری باعث میشه وقتی روی آیتم میریم یه سایه خاکستری روش قرار بگیره و زیبا شه! بهش Ripple effect میگن.
(میشه برای اتریبیوت foreground هم این افکت رو قرار داد. نمیدونم فرقش چیه)
مدل های دیگه ولی این از همه بهتر و سازگارتره
برای کارد ویو بعد از true قرار دادن clickable، به صورت زیر میشه این افکت رو ایجاد کرد:
android:foreground="?android:attr/selectableItemBackground"
اگر ویوی ما به صورت ذاتی قابل کلیک نباشه، مثل webView یا View یا کارد ویو و اینا باید این اتریبیوت رو براش true بذاریم تا توی کد بشه onClickListener واسش نوشت.
یعنی میگیم این ویو باید به کلیک ها پاسخ بده.
android:clickable="true"