検索ビューを使用しています。
<Android.support.v7.widget.SearchView
Android:id="@+id/searchView"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerVertical="true"
Android:layout_toLeftOf="@+id/imageViewMenu"
>
</Android.support.v7.widget.SearchView>
表示するテキストの色とアイコンの色を変更することはできますか?
現在、黒いテキストとアイコンが表示されています。白いテキストと白い検索アイコンに変更したい。
これはうまくいくかもしれません。
SearchView searchView = (SearchView) findViewById(R.id.search);
EditText searchEditText = (EditText)searchView.findViewById(Android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));
Android.support.v7.widget.SearchViewの場合、次のコードを使用して、テキストの色、テキストのヒントの色、およびアイコンを変更できます。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem searchMenuItem = menu.findItem(R.id.menu_action_search);
SearchView searchViewAction = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchableInfo searchableInfo = searchManager.getSearchableInfo(getComponentName());
searchViewAction.setSearchableInfo(searchableInfo);
searchViewAction.setIconifiedByDefault(true);
EditText searchEditText = (EditText)searchViewAction.findViewById(Android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));
ImageView searchMagIcon = (ImageView)searchViewAction.findViewById(Android.support.v7.appcompat.R.id.search_button);
searchMagIcon.setImageResource(R.drawable.ic_search_white);
return super.onPrepareOptionsMenu(menu);
}
テキストの色を変更するには:
int searchSrcTextId = getResources().getIdentifier("Android:id/search_src_text", null, null);
EditText searchEditText = (EditText) searchView.findViewById(searchSrcTextId);
searchEditText.setTextColor(Color.WHITE);
searchEditText.setHintTextColor(Color.LTGRAY);
閉じるボタンを変更するには:
int closeButtonId = getResources().getIdentifier("Android:id/search_close_btn", null, null);
ImageView closeButtonImage = (ImageView) searchView.findViewById(closeButtonId);
closeButtonImage.setImageResource(R.drawable.ic_action_cancel);
//この抜粋はAndroidソースコード(SearchView.Java)からです
mSearchButton = findViewById(R.id.search_button);
mSearchEditFrame = findViewById(R.id.search_edit_frame);
mSearchPlate = findViewById(R.id.search_plate);
mSubmitArea = findViewById(R.id.submit_area);
mSubmitButton = findViewById(R.id.search_go_btn);
mCloseButton = (ImageView) findViewById(R.id.search_close_btn);
mVoiceButton = findViewById(R.id.search_voice_btn);
mSearchHintIcon = (ImageView) findViewById(R.id.search_mag_icon);
参照: リンク
ツールバーにある場合は、ツールバーのテーマを設定します。たとえば、これによりテキスト(およびアイコン)が白になります
Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" >
<item name="colorControlHighlight">@color/LightGray</item>
<item name="Android:textColorHint">@color/LightGray</item>
<item name="Android:editTextColor">@color/TransparentGray</item>
</style>
このテーマをツールバーに適用して、メニュー項目の波及効果の(colorControlHighlight)色をヒントにします。
はい、あなたはそれを行うことができます、それを行う方法の1つ:
public static void customizeSearchView(SearchView searchView) {
int searchTextViewId = searchView.getContext().getResources()
.getIdentifier("Android:id/search_src_text", null, null);
AutoCompleteTextView searchTextView
= (AutoCompleteTextView) searchView.findViewById(searchTextViewId);
searchTextView.setTextSize(14);
searchTextView.setTextColor(Color.WHITE);
}