Pau*_*est 3 search android searchview android-support-library
我使用以下代码片段在SearchView小部件中查找TextView.
int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
mQueryTextView = (AutoCompleteTextView) searchView.findViewById(autoCompleteTextViewID);
Run Code Online (Sandbox Code Playgroud)
但是,当切换到android.support.v7.appcompat支持库时,它不再起作用.
我想这是因为支持库不使用android:"android:id/search_src_text"的前缀,但我不知道它应该是什么.我试过了
getResources().getIdentifier("android.support.v7.appcompat:id/search_src_text", null, null);
Run Code Online (Sandbox Code Playgroud)
PS更多代码片段:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// this xml has funshion:actionViewClass="android.support.v7.widget.SearchView"
getMenuInflater().inflate(R.menu.search_activity_actions_v7, menu);
android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView)
MenuItemCompat.getActionView(menu.findItem(R.id.action_search_v7));
if (searchView==null){
FSLogcat.e(TAG, "searchView is null!");
}else{
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
//searchView.requestFocus();
searchView.setSubmitButtonEnabled(true);
findSearchViewTextView(searchView);
updateSearchViewText();
}
return super.onCreateOptionsMenu(menu);
}
private void findSearchViewTextView(View searchView) {
int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
mQueryTextView = (AutoCompleteTextView) searchView.findViewById(autoCompleteTextViewID);
}
private void updateSearchViewText() {
if (mQueryTextView == null){
} else {
mQueryTextView.setText(mQuery);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,SearchView小部件很难将建议放入TextView中
// in SearchAutoComplete
// /**
// * We override this method to avoid replacing the query box text when a
// * suggestion is clicked.
// */
// @Override
// protected void replaceText(CharSequence text) {
// }
Run Code Online (Sandbox Code Playgroud)
更新:在SearchResultsActivity将SearchWidget作为SearchResultsActivity后,需要SearchWidget操作.虽然可能应该在下一次迭代中实现为一个Activity,但对于本周发布的当前版本,我只需要解决使用问题,即确保SearchResultsActivity上SearchWidget内的TextView始终具有最新查询.
也就是说,它是关键代码,如果它中断,它将被重写,但绝对不是通过克隆标准小部件.应该是其他方式.
Pau*_*est 11
正如Pedro Oliveira建议的那样
mQueryTextView = (AutoCompleteTextView) searchView.findViewById(R.id.search_src_text);
Run Code Online (Sandbox Code Playgroud)
单线工作正常.
| 归档时间: |
|
| 查看次数: |
2726 次 |
| 最近记录: |