天天看点

ActionBar关于search搜索按钮的显示问题

1. 搜索框按钮怎么点击都没反应,不出现搜索框

<item
android:id="@+id/action_search"
android:icon="@mipmap/actionbar_search_icon"
android:actionViewClass="android.support.v7.widget.SearchView"
android:title="@string/action_search"
app:showAsAction="ifRoom|collapseActionView"
/>
           

由于MainActivity继承的是AppCompatActivity,所以需要将 android:actionViewClass = "android.support.v7.widget.SearchView" 改为: app:actionViewClass="android.support.v7.widget.SearchView"

而且support.v7不可少。

2.MainActivity extends FragmentActivity或Activity 问题①:搜索框按钮不出现 修改为:

<item
        android:id="@+id/action_search"
        android:icon="@mipmap/actionbar_search_icon"
        android:actionViewClass="android.widget.SearchView"
        android:title="@string/action_search"
        tools:ignore="AppCompatResource"
        android:showAsAction="ifRoom|collapseActionView"
        />
           

注意:app:showAction要改为android:showAction,而且要添加tools:ignore="AppCompatResource",要忽略掉AppCompat Library,同时android:actionViewClass中的support.v7去掉 ②:overflow Button图标无法改为自定义的图标(比如说加号) 修改styles.xml文件,将parent="Theme.AppCompat.Light.DarkActionBar"改为 parent="android:Theme.Holo.Light.DarkActionBar"

我觉得以上出现的原因应该都与继承的Activity类型和library有关: ①如果继承的是 AppCompatActivity,相应的要改为app:showAsAction,要加support.v7,styles要改为 parent="Theme.AppCompat.Light.DarkActionBar"

②如果继承的是Activity,相应的要改为android:showAsAction,并且要添加 tools:ignore="AppCompatResource",忽略掉AppCompat Library,否则无法修改成android, styles要改为 parent="android:Theme.Holo.Light.DarkActionBar"

这样应该就能显示搜索按钮和加号了。