0

検索ボタンのアイコンが白だったので、検索アイコンを変更したい..

したがって、検索ボタンのビューを取得するコードを見つけました。

SearchView searchView = (SearchView) menu.findItem(R.id.action_search)
                .getActionView();
        //SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
        //searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        int searchImgId = getResources().getIdentifier("android:id/search_button", null, null);
        AppCompatImageView v = (AppCompatImageView) searchView.findViewById(searchImgId);
        v.setImageResource(R.drawable.action_search);

AppCompatImageView を ImageView に変更しても、まだ null があります。searchView の検索ボタンの Id が searchImgId と一致しないため、null になると思います。検索ボタンを取得するための正しい ID を取得するにはどうすればよいですか。

4

2 に答える 2

0

メニューxmlファイルを膨らませていないと思います。これを行うことができます。それがnullになる理由です。最初にメニュー ファイルを拡張する必要があり、そこから検索ボタン ID を取得できます。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.sample_actions, menu);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));

        searchView.setOnQueryTextListener(this);
        searchView.onActionViewExpanded();
        return super.onCreateOptionsMenu(menu);
    }

sample_action.xml

<?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_search"
        android:title="@string/menu_search"
        app:showAsAction="always"
        app:actionViewClass="android.support.v7.widget.SearchView"
        android:icon="@drawable/search_white"/>
</menu>
于 2016-01-07T04:34:31.387 に答える
-1

アップデート

あなたはこれを探しているかもしれません

searchView.setBackgroundColor(Color.BLACK);

しかし、完全にカスタマイズしたい場合は、これを試すことができます。私が提案しているのは、コードを減らし、UI が自分で処理できるようにすることです。

私はそれが白であることを知っています、そしてこれがあなたが望むものではないことを私は知っています. 簡単にカスタマイズでき、drawableより自由に遊ぶことができます

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_margin="8dp"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:layout_marginRight="-50dp"
            android:layout_weight="1"
            android:hint="some Text"
            android:paddingLeft="4dp" />

        <ImageView
            android:id="@+id/imageButton"
            style="?actionBarStyle"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:src="@android:drawable/ic_menu_search" />
    </LinearLayout>

出力

このレイアウトは次のように表示され、imageView手間をかけずに検索を変更し、editText要件に従ってプロパティを変更できます。

したがってView、レイアウトで処理されるため、機能のみをコーディングします。もっと好きAndroidな方法

ここに画像の説明を入力

于 2016-01-07T05:11:47.693 に答える