SearchView Edittext不显示光标

时间:2016-10-27 12:47:30

标签: android android-edittext textview searchview

我无法在searchview的edittext上显示光标以下是我试图实现的代码但没有用

    searchView = (SearchView) menu.findItem(R.id.search).getActionView();
    final int textViewID = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
    final EditText searchTextView = (EditText) searchView.findViewById(textViewID);
    try {
        Field mCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes");
        mCursorDrawableRes.setAccessible(true);
        mCursorDrawableRes.set(searchTextView, null); //This sets the cursor resource ID to 0 or @null which will make it visible on white background
    } catch (Exception e) {
    }

我甚至尝试了下面的代码,但即使这样似乎也不起作用。

EditText searchTextView = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchTextView.setFocusable(true);
searchTextView.setCursorVisible(true);

3 个答案:

答案 0 :(得分:4)

你在风格主题中的色调是什么?搜索字段的背景是什么?

尝试使用自定义绘图

    mCursorDrawableRes.set(searchTextView, R.drawable.cursor);

cursor.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@color/white" />
<size android:width="1dp" />
</shape>

答案 1 :(得分:1)

请删除代码行mCursorDrawableRes.set(searchTextView, null);,因为如果在此行之后将可绘制对象设置为光标,它将无法正确设置。因此,请删除该行,并使用可自定义的可绘制光标添加此mCursorDrawableRes.set(searchTextView, R.drawable.cursor);

答案 2 :(得分:0)

将其添加到xml中的Edittext。

<EditText  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textCursorDrawable="@drawable/color_cursor"
    android:background="@drawable/R.drawable.selfbg"/>

比创建drawalble xml:color_cursor

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <size android:width="2dp" />
    <solid android:color="#000000"  />
</shape>

希望这有帮助。