8

ICS+ の SearchView ウィジェットの点滅カーソルの色を変更しようとしています。私は次のことを試しました:

  • <item name="android:textCursorDrawable">@null</item>私のテーマに追加する
  • AutoCompleteTextViews のスタイルをテーマに追加し、そのスタイルの textCursorAttribute を @null に設定する
  • android:textCursorDrawable="@null"SearchView で直接設定する

私はここで答えを読みました(SearchView のカスタムカーソルカラー)が、searchAutoCompleteTextViewにはABS以外のスタイルがないため、これを試すことができませんでした。また、テキスト カーソル ドローアブルを設定する Java メソッドを探しましたが、見つかりませんでした。Java で SearchView の他の側面を変更していて、使用可能なメソッドがあればカーソルを使用して変更できます。

私は SearchView をかなり広範囲にカスタマイズしましたが、この最後の 1 つの変更は正しく表示されないようにしています。カーソルは白い背景に白いため、簡単には見えません。私が試すことができる他のアイデアはありますか?

4

4 に答える 4

57

上記のコメントと回答に基づいて、リフレクションを使用してこれがどのように見えるかの例を作成しました。これは私のアプリの問題を解決します。他の誰かの時間を節約できることを願っています。

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

その 0 は、R.drawable.my_cursor のような他のリソース ID である可能性があります

于 2013-11-05T18:45:22.040 に答える