【问题标题】:SearchView edittext is always nullSearchView 编辑文本始终为空
【发布时间】:2013-08-18 03:07:38
【问题描述】:

执行此操作时,我总是认为 textView 为空:

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);
}

有人知道为什么吗?

【问题讨论】:

标签: android searchview


【解决方案1】:

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

TextView searchText = (TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);

希望对您有所帮助。

【讨论】:

  • 难以置信的成功了!!!你救了我的命!你们是在哪里发现这些东西的??
  • Android 是开源的 :)
  • 如果您使用的是 AndroidX,请用于 id androidx.appcompat.R.id.search_src_text
【解决方案2】:

这是EditText 不是TextView。

试试这样的:

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

希望对你有帮助。

【讨论】:

  • 一个 EditText 实际上是一个 TextView。它继承了TextView。这就是为什么他们有很多相同的方法。 EditText 只是可编辑的。
  • @afollestad 你说得对。但就我而言,它适用于 EditView,但不适用于 TextView。我不知道究竟是为什么。也许又是一个神奇的机器人奥秘。
  • 一直在寻找 HOURS 直到我发现它被埋在这里。只是想非常感谢你
【解决方案3】:

如果您使用的是 AndroidX,那么您可以在 kotlin 中这样做。

override fun onCreateOptionsMenu(menu: Menu): Boolean {
            // Inflate the menu; this adds items to the action bar if it is present.
            menuInflater.inflate(R.menu.main, menu)
            val searchItem: MenuItem = menu.findItem(R.id.action_search)
            val searchView: SearchView = searchItem.actionView as SearchView
            val searchText: TextView = searchView?.findViewById(androidx.appcompat.R.id.search_src_text);
            searchText.setTextColor(Color.BLACK)
            searchText.background = resources.getDrawable(R.drawable.rounded_corner_background)

            return true
        }

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 1970-01-01
    • 2017-11-23
    • 2012-04-13
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多