我一直在尝试删除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,但我仍然可以看到底部的蓝线。
我面临的第二个问题是光标最初没有显示在文本上。我想在searchview中输入任何内容时显示光标。我试图通过编程方式使用
if (searchtextView.getText().toString().length() >= 0) {
searchtextView.setSelection(searchtextView.getText().toString().length());
}
即使在searchView内部没有文本也应显示光标。我认为它与焦点有关,因为当我输入2-3个字符时,光标会自动显示。
答案 0 :(得分:28)
我能够通过设置默认搜索视图板的背景来解决它,如下所示
int searchPlateId = searchView.getContext().getResources()
.getIdentifier("android:id/search_plate", null, null);
View searchPlateView = searchView.findViewById(searchPlateId);
if (searchPlateView != null) {
searchPlateView.setBackgroundColor(Color.BLACK);
}
这篇文章有帮助。article link
答案 1 :(得分:1)
您可以使用
android:queryBackground="@android:color/transparent"
答案 2 :(得分:0)
我能够在菜单创建功能期间通过clearfocus对搜索编辑文本进行操作。代码如下:
@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
}
}
}
}
}