【问题标题】:Why is Android's SearchView widget's ImageView (with id=search_mag_icon) returning null?为什么 Android 的 SearchView 小部件的 ImageView(id=search_mag_icon)返回 null?
【发布时间】:2015-08-07 09:53:14
【问题描述】:

默认SearchView 在展开时在搜索提示中有一个搜索图标。我想从提示中删除这个图标。

所以我看到了this answer on SO。它在onCreate() 中给出了以下解决方案:

int magId = getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView magImage = (ImageView) searchView.findViewById(magId);
magImage.setLayoutParams(new LinearLayout.LayoutParams(0, 0));

看看xml code of Android's search_view.xml here,这个解决方案确实很有意义,但我在以下sn-p的第6行得到NullPointerException

SearchView searchView = (SearchView) findViewById(R.id.searchActivity_searchView);
        int magId = getResources().getIdentifier("android:id/search_mag_icon", null, null);
        Log.i(TAG, "magId > "+ magId);
        ImageView magImage = (ImageView) searchView.findViewById(magId);
        Log.i(TAG, "magImage > "+ magImage);
        magImage.setLayoutParams(new LinearLayout.LayoutParams(0, 0));

在异常之前,它会打印:

08-07 14:13:15.740: I/SearchActivity(2548): magId > 16909188
08-07 14:13:15.740: I/SearchActivity(2548): magImage > null

那我该怎么办呢?

【问题讨论】:

    标签: android nullpointerexception searchview android-search


    【解决方案1】:

    试试这个:

    EditText searchEditText = (EditText) searchview.findViewById(android.support.v7.appcompat.R.id.search_src_text);
    SpannableStringBuilder ssb = new SpannableStringBuilder("");
    ssb.append(hintText);
    searchEditText.setHint(ssb);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-25
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2015-11-02
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      相关资源
      最近更新 更多