android搜索视图光标不可见为工具栏的相同颜色

San*_*ada 4 search android

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="right|end">

        <android.support.v7.widget.SearchView
            android:background="@null"
            android:id="@+id/searchView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</android.support.v7.widget.Toolbar>
Run Code Online (Sandbox Code Playgroud)

我的colorAccent也是colorPrimary,如何更改光标颜色,我提到了其他的排队,但没有解决我的问题

Muk*_*ana 13

你有两个选择.

1).您可以在styles.xml更改光标颜色时使用这些属性.

<item name="colorControlNormal">@color/colorEditextDisabled</item>
<item name="colorControlActivated">@color/colorEditextEnabled</item> // change this color to the required cursor color your need.
<item name="colorControlHighlight">@color/colorEditextEnabled</item>
Run Code Online (Sandbox Code Playgroud)

2).从您的FindText中找到并将属性SearchView设置android:textCursorDrawable@null.这将导致android:textColor光标颜色.但由于您无法以textCursorDrawable编程方式设置,因此在这种情况下您必须使用反射.

 EditText etSearch= ((EditText) yourSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text));
        try {
            Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
            f.setAccessible(true);
            f.set(etSearch, null);// set textCursorDrawable to null
        } catch (Exception e) {
            e.printStackTrace();
        }
        etSearch.setTextColor(ContextCompat.getColor(mContext, R.color.yourColor));
Run Code Online (Sandbox Code Playgroud)

希望以上任何解决方案都能为您服务.. !!