Интерактивный TextView для Android с подсказкой и изображением для запуска диалогового окна поиска и представления выбранного результата

Я ищу пример, который показывает, как я могу реализовать интерактивное текстовое представление, которое запускает диалоговое окно поиска Android по умолчанию и отображает выбранную строку результата.

Оно должно иметь то же поведение и дизайн, что и поле поиска на панели действий Google Maps на Android (например, значок увеличительного стекла слева, подсказка «Поиск», если текстовое представление пусто, щелчок запускает диалоговое окно поиска, определяемое доступным для поиска Вход):


person user640688    schedule 18.03.2011    source источник


Ответы (3)


Это пользовательский EditText с составным рисунком

public class SearchEditText extends EditText {

    private boolean mMagnifyingGlassShown = true;
    private Drawable mMagnifyingGlass;

    public SearchEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        mMagnifyingGlass = getCompoundDrawables()[0];
    }

    /**
     * Conditionally shows a magnifying glass icon on the left side of the text field
     * when the text it empty.
     */
    @Override
    public boolean onPreDraw() {
        boolean emptyText = TextUtils.isEmpty(getText());
        if (mMagnifyingGlassShown != emptyText) {
            mMagnifyingGlassShown = emptyText;
            if (mMagnifyingGlassShown) {
                setCompoundDrawables(mMagnifyingGlass, null, null, null);
            } else {
                setCompoundDrawables(null, null, null, null);
            }
            return false;
        }
        return super.onPreDraw();
    }

И XML

<view
                class="com.tr.search.SearchEditText"
                android:id="@+id/search_src_text"
                android:layout_height="wrap_content"
                android:layout_width="0dip"
                android:layout_weight="1.0"
                android:singleLine="true"
                android:ellipsize="end"
                android:hint="@string/search_bar_hint"
                android:drawableLeft="@drawable/magnifying_glass"
                android:freezesText="true"
            />

Результат введите здесь описание изображения

person Trung Nguyen    schedule 19.06.2012

Вам следует ознакомиться с официальной документацией: http://d.android.com/guide/topics/search/search-dialog.html

person 4e4c52    schedule 18.03.2011

хорошо, сначала вы должны сделать свой textView интерактивным со следующим кодом

TextView txtView =findViewById(R.id.txtView);
txtView.setOnClickListener(new OnClickListener(View v){
new OnClickListener() {

            @Override
        public void onClick(View v) {
            //Your Code for calling search ativity
        }
    });

чтобы узнать об активности в поиске, пожалуйста, обратитесь здесь

есть также один пример для диалогового окна поиска в android sdk, если вы используете eclipse, просто нажмите

File->new->android Project->select sdk
->create project from  existing project sample
select searchableDictionary
person Sunil Pandey    schedule 18.03.2011
comment
Спасибо за Ваш быстрый ответ. Я знаю диалог поиска соответственно новый виджет поиска сот. Вопрос фокусируется на макете текстового представления (например, в приложении Google Maps), а не на обработке диалогового окна поиска (например, onSearchRequested и т. д.). Как я могу реализовать текстовое представление, которое содержит подсказку, имеет увеличительное стекло слева от текстового представления (внутри), но действует как кнопка? Существуют ли какие-либо ресурсы/стили, которые можно применить (android.R.*)? Заранее спасибо, Торстен - person user640688; 18.03.2011