14

我一直在尝试删除 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,但我仍然可以看到底部的蓝线。

我面临的第二个问题是光标最初没有显示在文本上。我想在搜索视图中没有输入任何内容时显示光标。我尝试通过使用以编程方式进行

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

即使在 searchView 中不存在任何文本,它也应该显示光标。我认为它与焦点有关,因为当我输入 2-3 个字符时,光标会自动显示。

4

3 回答 3

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);
    }

这篇文章有所帮助。文章链接

于 2013-12-12T23:12:41.027 回答
1

您可以使用

android:queryBackground="@android:color/transparent"
于 2016-07-29T16:24:17.590 回答
0

我能够通过在菜单创建功能期间清除搜索编辑文本的焦点来使其工作。下面的代码:

@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
                    }
                }
            }
        }
}
于 2014-12-29T02:26:27.453 回答