SearchView删除蓝色的对焦线,并在某个位置显示光标

我一直在试图删除SearchView中的蓝色焦点线。我把它转换成一个AutoCompleteTextView,以便我可以使用自定义的图标为我的searchView。

int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); searchtextView = (AutoCompleteTextView) searchView.findViewById(id); 

我曾尝试使用

 searchtextView.setBackGroundColor(0) 

并在我的xml中手动设置背景为#0000000,但我仍然可以在底部看到蓝线。

我面临的第二个问题是光标不会显示在文本最初。我想显示光标时,什么都没有input在searchview.I试图做到这一点编程通过使用

 if (searchtextView.getText().toString().length() >= 0) { searchtextView.setSelection(searchtextView.getText().toString().length()); } 

即使searchView中没有文本,也应该显示光标。我认为它与焦点有关,因为当我input2-3个字符时,光标会自动显示。

Solutions Collecting From Web of "SearchView删除蓝色的对焦线,并在某个位置显示光标"

我能够通过设置默认的searchview板的背景来解决它,如下所示

 int searchPlateId = searchView.getContext().getResources() .getIdentifier("android:id/search_plate", null, null); View searchPlateView = searchView.findViewById(searchPlateId); if (searchPlateView != null) { searchPlateView.setBackgroundColor(Color.BLACK); } 

这篇文章帮助。 文章链接

您可以使用

 android:queryBackground="@android:color/transparent" 

通过在菜单创buildfunction中清除search编辑文本,我可以使其工作。 代码如下:

 @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); ... final MenuItem searchItem = menu.findItem(R.id.action_search); if (searchItem != null) { // Associate searchable configuration with the SearchView SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); final SearchView view = (SearchView) searchItem.getActionView(); if(view !=null){ LinearLayout searchPlate = (LinearLayout)mSearchView.findViewById(R.id.search_plate); if(searchPlate != null){ mSearchEditText = (EditText)searchPlate.findViewById(R.id.search_src_text); if(mSearchEditText != null){ mSearchEditText.clearFocus(); // This fixes the keyboard from popping up each time } } } } }