<item android:id="@+id/action_settings" android:title="@string/action_settings"..." />
خانه » لایبرری های مفید و تجربیات شخصی خیلی مفید !!! » ActionBarCompat » ActionBarCompat قسمت سوم استفاده از جستجوگر و گذاشتن listener برای دکمه های منو

ActionBarCompat قسمت سوم استفاده از جستجوگر و گذاشتن listener برای دکمه های منو

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

در قسمت قبل چند آیتم به منو اضافه کردیم
حالا در بخشی از اون کد رو تغییر میدیم :

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
        >
    <item
            android:id="@+id/action_refresh"
            android:title="@string/action_refresh"
            android:icon="@drawable/ic_refresh"
            app:showAsAction="ifRoom" />
    <item
            android:id="@+id/action_search"
            android:title="@string/action_search"
            android:icon="@drawable/ic_search"
            android:icon="@drawable/abc_ic_search"
            app:actionViewClass="android.support.v7.widget.SearchView"
            app:showAsAction="always" />
    <item
            android:id="@+id/action_settings"
            android:title="@string/action_settings"
            app:showAsAction="never" />
</menu>

در اینجا از actionViewClass استفاده شده و مقدار آن برابر android.support.v7.widget.SearchView قرارداده شده ، با این کار از ویجت جستجوگر استفاده می شود (این ویجت امکان به صورت دکمه ای است که زمان کلیلک بر روی آن باز شده و تغییر شکل می دهد و گزینه بستن نیز دارد )

حالا در کد زمان ساخته شدن آن را find می کنیم


    private SearchView mSearchView;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
                Toast.makeText(MainActivity.this, s, Toast.LENGTH_LONG).show();
                return true;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                return false;
            }
        });

        return true;
    }

توجه کنید که ۲ تا SearchView داریم که باید از

import android.support.v7.widget.SearchView; 

استفاده کنید

خوب حالا زمانی که متن نوشته شود و دکمه تایید زده شود متد onQueryTextSubmit و زمانی که متن تغییر کند متد onQueryTextChange فراخوانی می شود.

تموم در قسمت بعدی منوی کشویی یا همون NavigationDrawer رو به اکشن بار اضافه می کنیم

برچسب ها:
پست قبلی
پست بعدی

درباره ایلیا عابدینی

برنامه نویس اندروید و کارشناس مهندسی پزشکی، نفر سوم مسابقه برنامه نویسی اندروید http://www.schallenge.ir ، از سال 92 برنامه نویسی اندروید رو شروع کردم و در حال حاضر در شرکت عصر دانش در حال توسعه اپلیکیشن تجارت پی می باشدم ، این وبلاگ رو ساختم تا تجربیات روزانه و مفید خودم رو داخل اون بزارم. رزومه : iact.ir/cv

3 دیدگاه

  1. سلام این کدتون خیلی بهم کمک کرد. فکر نمی کردم به این سادگی باشه. دمت گرم. راستی توی این کد دوبار آیکن رو مشخص کردی و دیگه اینکه من فهمیدم اگه تایتل رو از آیتم حذف کنیم اررور نال پویتر اکسپشن میده.

  2. با سلام و سپاس خدمت استاد گرامی 

    آیا  ActionBar Compat برای اندرودهای زیر ۳ راست چین می شود؟ 

    اگر نمی شود لطفا راهکار را ارایه کنید.

    ممنون

    • سلام ، امکان rtl کردن تم فکر نمی کنم وجود اشته باشه

      اما میتونید برای اکشن بار از toolbar استفاده کنید که جایگزین custom actionbar شده، و اکشن بار مورد نظر خودتون رو طراحی کنید

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا