Android searchView,显示长字符串的第一部分而不是最后一部分

时间:2018-01-26 22:09:19

标签: android searchview

如果我将SearchView查询设置为比该框长的字符串,我该如何使它成为字符串的第一部分而不是最后一部分? (我将它用作WebView的导航/搜索栏。)

我做

mySearchView.setQuery("Start of long string.... at the end.", false);

并希望它显示

Start of long

而不是

at the end

它始终向我展示结束。基本上,我希望它滚动回文本的开头。

编辑:我确实希望完整的文本存在,只是滚动到开头。

3 个答案:

答案 0 :(得分:2)

如果我记得很清楚,你需要抓住EditText中的SearchView,然后在其上设置椭圆形。

int id = mySearchView.getContext()
    .getResources()
    .getIdentifier("android:id/search_src_text", null, null);
EditText editText = (EditText) mySearchView.findViewById(id);
editText.setEllipsize(TextUtils.TruncateAt.END);

如果您不想进行椭圆化,可以使用相同的方法并在EditText中设置位置。

int id = mySearchView.getContext()
    .getResources()
    .getIdentifier("android:id/search_src_text", null, null);
EditText editText = (EditText) mySearchView.findViewById(id);
editText.setSelection(0);

答案 1 :(得分:0)

根据Android: showing text in EditText from start我会尝试这个

mySearchView.setOnFocusChangeListener(new OnFocusChangeListener() {

@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus == false) {  // lost focus
   mEdittext.setSelection(0,0);
}
}
});

另外,请检查此Android SearchView OnFocusChangeListener: onFocusChange is not called at all,否则我无法帮助您

答案 2 :(得分:0)

以上解决方案均不适用于我。 我正在使用appcompat v7操作栏,并且可以正常工作!

EditText editText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editText.setSelection(0);