آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

آموزش جاوا و اندروید

یادداشت های یک برنامه نویس معمولی

طبقه بندی موضوعی

۸ مطلب با موضوع «آموزش اندروید :: تولبار» ثبت شده است

همان طور که مستحضر هستید، آیتم های منوی پاپ آپ نمیتونن آیکون داشته باشن. برای حل این موضوع، یک آیتم برای منو میسازیم و به آیکونش وکتور سه نقطه میدیم. توی این آیتم یک زیر منو تعریف میکنیم. به صورت زیر:

 

<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" />

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۸ شهریور ۹۹ ، ۱۸:۳۱
میم دال

با کد زیر در پروژه collapsing toolbar رنگ غالب بک گراند تولبار پیدا شده و برای تولبار ست میشود.

 

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg2);
Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
    @Override
    public void onGenerated(@Nullable Palette palette) {
        if (palette != null) {
            collapsingToolbar.setContentScrimColor(palette.getMutedColor(R.attr.colorPrimary));
        }
    }
});

 

نکته: دپندنسی زیر باید در گریدل اضافه شه:

 

implementation 'androidx.palette:palette:1.0.0'
۰ نظر موافقین ۰ مخالفین ۰ ۰۲ شهریور ۹۹ ، ۰۱:۲۰
میم دال

با اضافه کردن کد زیر در اکتیویتی میشه فلش بک رو توی تولبار که بهش HomeAsUp گفته میشه رو اضافه کرد.

actionBar.setDisplayHomeAsUpEnabled(true);

تغییر آیکون این دکمه:

 

actionBar.setHomeAsUpIndicator(R.drawable.ic_back);

 

جهت ست کردن تسک برای این دکمه:

روش اول:

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

    if(item.getItemId()==android.R.id.home){

        Toast.makeText(this, "home as up is clicked!", Toast.LENGTH_SHORT).show();
        onBackPressed();
    }

    return super.onOptionsItemSelected(item);
}

 

اینجا با تاچ کردن این دکمه، toast نمایش داده میشه و اکتیویتی به عقب برمیگرده (کار دکمه بک انجام میشه)

 

روش دوم:

اوور راید کردن متد زیر در اکتیویتی (بنظرم روش بهتریه):

@Override
public boolean onSupportNavigateUp() {
    onBackPressed();
    return super.onSupportNavigateUp();
}

توجه: اگر از پاپ آپ منو استفاده بشه، روش دوم جواب نمیده و باید از روش اول استفاده کرد (یعنی باید توی سوییچ همراه با باتن های منو تسک این باتن رو هم ست کنیم)

 

نکته: اگر از تولبار استفاده میشه (که اکثر اوقات میشه و تم NoActionBar هست) در این صورت حتما اول باید 

 

setSupportActionBar(toolbar);

نوشته بشه وگرنه ارور نال پوینتر میده چون اکشن باری وجود نداره.

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۲ شهریور ۹۹ ، ۰۱:۱۷
میم دال

کد XML ساخت appBarLayout

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۱ شهریور ۹۹ ، ۲۲:۳۰
میم دال

AppBarLayout تولبار کشیدنیه! یعنی این شکلی

 

AppBarLayout یک لینیر لیوت از نوع عمودی هست. پرنت این لیوت حتما باید coordinator layout باشه تا انیمیشنش ایجاد شه.

width این لیوت رو match_parent و height اون رو معمولا 300dp میذارن.

 

داخل این ویو، CollapsingToolbarLayout قرار میگیره. داخل این هم imageView برای بک گراند و Toolbar قرار میگیرن.

اتریبیوت های لازم رو توی کد توضیح میدم.

 

نکته دیگه اینه که ادامه اپلیکیشن، یعنی بعد از CollapsingToolbarLayout، حتما باید توی NestedScrollView قرار بگیره.

 

اگر بخواهیم توی CollapsingToolbarLayout ویویی قرار بدیم، باید از اتریبیوت های app:layout_anchor و layout_anchorGravity استفاده کنیم.

 

۰ نظر موافقین ۰ مخالفین ۰ ۰۱ شهریور ۹۹ ، ۱۴:۵۲
میم دال

تولبار یک ویو گروپ هست. یعنی میتونه واسه خودش یه لیوت داشته باشه و توی اون ویجت قرار بگیره.

 

میشه برای تولبار title  و subTitle و  آیکون برای نویگیشن و elevation قرار داد. 

()toolbar.setTitle

()toolbar.setSubTitle

()toolbar.setNavigationIcon

()toolbar.setElevation

بهتره تولبار رو توی یک لیوت جداگونه نوشت و از تگ include استفاده کرد.

 

اگر توی یک style جدید اتریبیوت های زیر رو بنویسیم:

textPrimaryColor و textSecondaryColor به ترتیب رنگ های فونت تولبار و پاپ آپ تعیین میشه.

استایل رو توی xml با اتریبیوت theme اعمال میکنیم.

میشه اتریبیوت themePopUp برای تم منو نیز تعیین کرد.

۰ نظر موافقین ۰ مخالفین ۰ ۲۱ ارديبهشت ۹۹ ، ۱۷:۰۰
میم دال