【问题标题】:Android SDK 22 - SearchView rendering problemsAndroid SDK 22 - SearchView 渲染问题
【发布时间】:2015-05-14 09:13:14
【问题描述】:

我们刚刚将本地 Android SDK 更新为新的 version 22,我们正在尝试更新我们的应用程序,但这似乎是 em>SearchView 在布局中渲染 Android Studio 的设计视图:每次设计者尝试渲染 SearchView 元素时,都会抛出异常:

java.lang.NullPointerException 在 android.content.res.TypedArray.hasValueOrEmpty(TypedArray.java:845) 在 android.widget.SearchView.(SearchView.java:295) android.widget.SearchView.(SearchView.java:258) 在 android.widget.SearchView.(SearchView.java:254) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:422) 在 android.view.LayoutInflater.createView(LayoutInflater.java:607) 在 android.view.LayoutInflater.onCreateView(LayoutInflater.java:682) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741) 在 android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:806) 在 android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:782) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:504) android.view.LayoutInflater.inflate(LayoutInflater.java:385)

即使我们在新布局文件中从左侧工具栏创建新元素,也会发生这种情况。 有什么想法吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <SearchView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/searchView" />
</LinearLayout>

【问题讨论】:

    标签: android android-layout android-studio searchview


    【解决方案1】:

    编辑

    根据您的 Manifest,将您的设计师预览版上的 android 版本更改为当前版本。渲染问题导致您的设计器预览使用的 API 级别高于您当前的 android API 级别。


    它应该可以工作

    只需将android xml布局中的api 22改为21

    【讨论】:

    • 即使这看起来更像是一种 hack 而不是解决方案,但它确实有效。谢谢! :-)
    【解决方案2】:

    我投票支持 Davide cmets。错误意味着 searchIcon 不能为空(为什么?)。

    这可以在 Studio 中使用 api 22 进行编译,但会强制您选择一个图标。该示例是 android 的 2 个默认值之一(没有 searchview 默认值那么酷),您始终可以使用自定义的...

    这里是sn-p。

            <SearchView
            android:id="@+id/searchBox"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:searchIcon="@android:drawable/ic_search_category_default"
            tools:ignore="UnusedAttribute" />
    

    【讨论】:

    • 即使您的 sn-p 在布局设计中似乎也不起作用,我们也会遇到相同的渲染错误。
    【解决方案3】:

    source 中找到了这个。评估失败的是对 a 的取消引用。

        final TypedArray a = context.obtainStyledAttributes(
                attrs, R.styleable.SearchView, defStyleAttr, defStyleRes);
    
        [...]
    
        // Prior to L MR1, the search hint icon defaulted to searchIcon. If the
        // style does not have an explicit value set, fall back to that.
        if (a.hasValueOrEmpty(R.styleable.SearchView_searchHintIcon)) {
            mSearchHintIcon = a.getDrawable(R.styleable.SearchView_searchHintIcon);
        } else {
            mSearchHintIcon = a.getDrawable(R.styleable.SearchView_searchIcon);
        }
    

    尝试设置样式属性?

    【讨论】:

    • 什么意思?我们尝试将android:searchHintIcon="@drawable/ic_icon" android:searchIcon="@drawable/ic_icon" 添加到 SearchView 没有任何好的结果:-(
    • 我们还尝试将 style 属性添加到 SearchView 元素并将相关的android:searchHintIcon/android:searchIcon 添加到 styles.xml没有任何财富。
    【解决方案4】:

    尝试将API级别更改为更高不会出现渲染错误。

    它将解决渲染问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-15
      • 2015-05-16
      • 1970-01-01
      • 2016-07-06
      • 2013-05-11
      • 2013-08-14
      • 2016-03-31
      相关资源
      最近更新 更多