【问题标题】:SearchView Edittext not showing cursorSearchView Edittext 不显示光标
【发布时间】:2017-03-10 03:49:56
【问题描述】:

我无法在 searchview 的编辑文本上显示光标 以下是我尝试实现但没有用的代码

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

【问题讨论】:

    标签: android android-edittext textview searchview


    【解决方案1】:

    您在样式主题中的颜色重点是什么?搜索栏的背景是什么?

    尝试使用自定义可绘制对象

        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>
    

    【讨论】:

    • 兄弟,我的强调色错误,但问题仍然存在,我必须保持强调色不变..
    • 在我的情况下,我的强调色和搜索视图背景是相同的,所以我的光标不可见。我使用了这个自定义的可绘制光标,然后它是可见的。
    【解决方案2】:

    将此添加到您的 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>
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多