Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SearchView移除蓝色焦点线并在特定位置显示光标_Android_Focus_Autocompletetextview_Searchview_Android Background - Fatal编程技术网

Android SearchView移除蓝色焦点线并在特定位置显示光标

Android SearchView移除蓝色焦点线并在特定位置显示光标,android,focus,autocompletetextview,searchview,android-background,Android,Focus,Autocompletetextview,Searchview,Android Background,我一直在尝试删除SearchView中的蓝色焦点线。我正在将其转换为AutoCompleteTextView,以便可以为我的SearchView使用自定义图标 int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); searchtextView = (AutoCompleteTextView) searchView.findVi

我一直在尝试删除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个字符时,光标会自动显示。

我可以通过如下设置默认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);
    }

这篇文章很有帮助。

在菜单创建功能中,我可以通过清除搜索编辑文本的焦点来实现这一功能。代码如下:

@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
                    }
                }
            }
        }
}
你可以用

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

android:background=@android:color/transparent
。这将删除蓝线我尝试过这样做,但蓝线不会消失。background属性只是将Searchview的背景设置为透明,而不会删除焦点线。您至少为我节省了几个小时palAndroid API 21级