SearchView edittext始终为null

dan*_*sgb 11 android searchview

这样做时我总是得到textView为null:

public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat
                .getActionView(searchItem);

        int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        TextView textView = (TextView) searchView.findViewById(id);
        textView.setTextColor(Color.WHITE);
}
Run Code Online (Sandbox Code Playgroud)

谁知道为什么?

小智 35

我正在使用appcompat v7的操作栏,我的解决方法是:

TextView searchText = (TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.

  • 如果您使用的是 AndroidX,请使用 id `androidx.appcompat.R.id.search_src_text` (2认同)

Und*_*ted 17

EditText不是一个TextView.

尝试类似的东西:

int id = searchView.getContext()
                   .getResources()
                   .getIdentifier("android:id/search_src_text", null, null);
EditText editText = (EditText) searchView.findViewById(id);
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 实际上,EditText是一个TextView.它继承了TextView.这就是为什么他们有很多相同的方法.EditText只是可编辑的. (2认同)
  • 一直在寻找几个小时,直到我发现它埋在这里。只是想非常感谢你 (2认同)