documentation에 설명 된대로 최근 검색어 제안으로 검색 인터페이스를 구현했습니다. 그리고 어떤 이유로 인해 역사 아이콘이 잘못된 테마 (빛이 아닌 어둠)에서 나옵니다.최근 검색 아이콘 (SearchManager.SUGGEST_COLUMN_ICON_1 열) 변경 방법
내 현재 작업이 아이콘을 변경하는 것입니다. 나는 내 테마 그래서 나는 SearchRecentSuggestionsProvider
을 무시하려고하지만 어떤 성공을없이하고 올바른 생각합니다. 나는이 개 글 (there 및 there) 내가 가지고에서 영감을했다 다음과 같은 작업을 시도했습니다.
재정 query()
다른 투사
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
Uri iconUri = Uri.parse("android.resource://" + getContext().getPackageName() + "/drawable/icon_search_history");
projection = new String[] {
"_id",
"display1 AS " + SearchManager.SUGGEST_COLUMN_TEXT_1,
"query AS " + SearchManager.SUGGEST_COLUMN_QUERY,
"'" + iconUri + "'" + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1
};
return super.query(uri, projection, selection, selectionArgs, sortOrder);
}
가 나는 또한 setupSuggestions을 재정의하는 시도를 지정()
@Override
protected void setupSuggestions(String authority, int mode) {
super.setupSuggestions(authority, mode);
Uri iconUri = Uri.parse("android.resource://" + RFDApplication.getApplicationPackageName() + "/drawable/icon_search_history");
Field f = null;
try {
f = getClass().getDeclaredField("mSuggestionProjection");
f.setAccessible(true);
String[] projection = new String [] {
"0 AS " + SearchManager.SUGGEST_COLUMN_FORMAT,
"'" + iconUri + "'" + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1,
"display1 AS " + SearchManager.SUGGEST_COLUMN_TEXT_1,
"query AS " + SearchManager.SUGGEST_COLUMN_QUERY,
"_id"};
f.set(this,projection);
} catch (Exception e) {
e.printStackTrace();
}
}
나는 그런 힘든 시간 아이콘 : 어떤 도움이나 제안하고자 변화를 상상하지 많이 감사하겠습니다 ...
EDIT 나는 완전히 만족스러운 해결책을 찾았습니다. n query()
. 나는 여전히 결과를 두 번 반복하는 것을 피하는 것을 선호 할 것이다. (비록 오버 헤드가이 경우에는 무시할 만하다.) 그래서 질문은 열린 상태로 유지
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
// File to use
Cursor parent = super.query(uri, projection, selection, selectionArgs, sortOrder);
Uri iconUri = Uri.parse("android.resource://" + getContext().getPackageName() + "/drawable/icon_search_history");
MatrixCursor cursor = new MatrixCursor(parent.getColumnNames());
parent.moveToFirst();
while (parent.moveToNext()){
cursor.addRow(new Object[]{
parent.getInt(parent.getColumnIndex("suggest_format")),
iconUri,
parent.getString(parent.getColumnIndex("suggest_text_1")),
parent.getString(parent.getColumnIndex("suggest_intent_query")),
parent.getInt(parent.getColumnIndex("_id"))
});
}
return cursor;
}