searchView 不容易定制,但我确实找到了解决方法。我的研究和代码主要取自此处找到的第一个答案:更改 searchview 小部件的背景可绘制对象。在我的 XML 文件中设置背景后,如下所示:
`<SearchView
android:layout_width="match_parent"
android:layout_height="30dp"
android:background="@drawable/rounded_grey_search_bar"
android:clickable="true"
android:iconifiedByDefault="false"/>`
我将以下代码添加到我的 Java 文件中以更改 SearchView 的填充:
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null);
searchView.findViewById(searchPlateId).setBackgroundResource(R.drawable.rounded_grey_search_bar);
int voiceSearchPlateId = searchView.getContext().getResources().getIdentifier("android:id/submit_area", null, null);
searchView.findViewById(voiceSearchPlateId).setBackgroundResource(R.drawable.rounded_grey_search_bar);
int searchTextViewId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView searchTextView = (TextView) searchView.findViewById(searchTextViewId);
searchTextView.setPadding(20, 20, 20, 20);
设置填充让我可以在我想要的地方获得文本。