我通过基于this tutorial的内容提供者实现了自定义建议;它的工作原理,但我有一个问题样式的建议列表。我目前的建议清单有黑色背景和白色文本。我想将其更改为白色背景和黑色文本。我做了一些网上搜索,并试图在styles.xml文件是这样的:如何在Android中自定义搜索建议列表的样式
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="suggestionRowLayout">@layout/list_item_search_suggestion</item>
</style>
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
我list_item_search_suggestion看起来是这样的:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@android:id/text1"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:gravity="center_vertical"
android:minHeight="56dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:textColor="@android:color/black"
tools:text="Blah blah blah"/>
然而,当我运行的应用程序和搜索的东西,它崩溃之前该建议列表出现。在SuggestionsAdapter中,我从newView方法中得到一个NullPointerException异常。这个SuggestionAdapter来自SDK,我没有实现我自己的适配器。我只是实现内容提供者并将其设置在searchable.xml中。堆栈轨道是这样的:
06-15 21:11:09.253 4063-4063/com.tophatter E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.tophatter, PID: 4063
java.lang.NullPointerException
at android.support.v7.widget.SuggestionsAdapter.newView(SuggestionsAdapter.java:249)
at android.support.v7.widget.SuggestionsAdapter.getView(SuggestionsAdapter.java:453)
at android.widget.AbsListView.obtainView(AbsListView.java:2255)
at android.widget.ListPopupWindow$DropDownListView.obtainView(ListPopupWindow.java:1585)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1263)
at android.widget.ListPopupWindow.buildDropDown(ListPopupWindow.java:1167)
at android.widget.ListPopupWindow.show(ListPopupWindow.java:554)
at android.widget.AutoCompleteTextView.showDropDown(AutoCompleteTextView.java:1096)
at android.widget.AutoCompleteTextView.updateDropDownForFilter(AutoCompleteTextView.java:971)
at android.widget.AutoCompleteTextView.onFilterComplete(AutoCompleteTextView.java:953)
at android.widget.Filter$ResultsHandler.handleMessage(Filter.java:285)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
如果您发布堆栈跟踪会很有帮助。 – Skynet
请张贴您的适配器代码和您正在充气的视图,以便我可以帮助您 – AnswerDroid
同样在这里,我想将“light”主题应用于建议行,为searchview widget维护AppCompat.Dark.ActionBar 。你可以发布你的list_item_search_suggestion布局吗? – Jumpa