Android操作栏SearchView菜单图标大小

时间:2014-04-08 04:11:19

标签: android android-actionbar searchview

我已在活动的操作栏中实施了SearchView,它运行正常,并会在Galaxy Nexus和大多数模拟器上按预期显示。但是在Galaxy Note 10.1和具有平板电脑大小屏幕的模拟器上,它看起来像这样:

Screenshot of SearchView menu icon size problem

如您所见,搜索图标比其他图标小得多。如何获取搜索图标的图标大小以匹配其他图标?或者我如何在大屏幕上统一图标大小?

起初我想也许这个问题可能与drawable的大小有关,但在检查之后我可以确认项目drawable-hdpidrawable-mdpi和{{1}中的图标一直存在资源文件夹,与其他菜单图标大小相同。我使用this tool来生成drawables,并且任何drawable的大小都没有任何不规则性。我甚至尝试使用相同的drawable作为其他菜单图标之一,结果大小差异是相同的。

图标保持相同的大小,drawable-xhdpi打开(这很好,否则它可能会与SearchView视图的下划线重叠),但当EditText再次关闭时图标大小相同,但仍然比其他图标小得多,这可能是发生这种情况的线索。

活动代码:

SearchView

RES /菜单/的example.xml

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.example, menu);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        SearchManager manager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        final SearchView search = (SearchView) menu.findItem(R.id.search).getActionView();
        final MenuItem item = menu.findItem(R.id.search);
        search.setSearchableInfo(manager.getSearchableInfo(getComponentName()));
} else {
    menu.removeItem(R.id.search); // API < 11
    }   
    return true;
}

RES / XML / searchable.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/search"
        android:title="@string/search"
        android:icon="@drawable/search"
        android:showAsAction="ifRoom"
        android:actionViewClass="android.widget.SearchView" />

</menu>

的AndroidManifest.xml

<searchable xmlns:android="http://schemas.android.com/apk/res/android"
    android:label="@string/search"
    android:hint="@string/search" >
</searchable>

更新:

道歉这个问题实际上与drawables有关。具体是菜单图标的大小比例。 <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.default_searchable" android:value="com.example.ExampleActivity" /> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> 菜单图标均为64x64(x2),应为48x48(x1.5)。

因此,可以通过将所有hdpi-drawable菜单图标重新调整为32x32和mdpi-drawable至48x48和hdpi-drawable至64x64来解决此问题(感谢@rekire建议)

问题是由使用旧版this tool生成菜单图标引起的。因此,如果您遇到同样的问题,可以尝试使用最新版本生成新图标。

2 个答案:

答案 0 :(得分:5)

我唯一可以想象你在一个可绘制目录中放置了一个太小的图像。请检查图片尺寸是否从ldpimdpihdpixhdpi,xxhdpi增加到xxxhdpi

默认像素维度适用于mdpi 32x32hdpi 48x48xhdpi 64x64

同时检查我的calculator,它会为您计算正确的图像尺寸。

答案 1 :(得分:2)

使用drawable作为位图 它的大小 使用位图xml

How to Resize a Bitmap in Android?

SearchView searchView = ((SearchView) searchMenuItem.getActionView());
            int searchImgId = android.support.v7.appcompat.R.id.search_button;
            Drawable searchIcon = scaled drawable .....
searchView.findViewById(searchImgId)).setImageDrawable(searchIcon);