簡體   English   中英

Android操作欄SearchView菜單圖標大小

[英]Android Action Bar SearchView Menu Icon Size

我已經在活動的操作欄中實現了SearchView ,它運行正常,並且會在Galaxy Nexus和大多數模擬器上按預期顯示。 但是在Galaxy Note 10.1和具有平板電腦大小屏幕的模擬器上,它看起來像這樣:

SearchView菜單圖標大小問題的屏幕截圖

如您所見,搜索圖標比其他圖標小得多。 如何獲取搜索圖標的圖標大小以匹配其他圖標? 或者我如何在大屏幕上統一圖標大小?

起初我想也許這個問題可能與drawable的大小有關,但在檢查之后我可以確認項目drawable-hdpidrawable-mdpidrawable-xhdpi資源文件夾中的圖標一致,並且大小與其他菜單圖標。 我使用這個工具來生成drawables,並且任何drawables的大小都沒有任何不規則性。 我甚至嘗試使用相同的drawable作為其他菜單圖標之一,結果大小差異是相同的。

SearchView打開時圖標保持相同的大小(這很好,因為否則它可能會與EditText視圖的下划線重疊),但是當再次關閉SearchView時,圖標大小相同,仍然比其他圖標小得多這可能是為什么會發生這種情況的線索。

活動代碼:

@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 /菜單/的example.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>

RES / XML / searchable.xml

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

AndroidManifest.xml中

<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" />

更新:

道歉這個問題實際上與drawables有關。 具體是菜單圖標的大小比例。 hdpi-drawable菜單圖標應為48x48(x1.5)時,它們都是64x64(x2)。

因此,可以通過將所有mdpi-drawable菜單圖標重新調整為32x32並將hdpi-drawable重新調整為48x48並將xhdpi-drawable重新調整為64x64來解決此問題(感謝@rekire建議這一點)。

該問題是由使用此工具的舊版本生成菜單圖標引起的。 因此,如果您遇到同樣的問題,可以嘗試使用最新版本生成新圖標。

唯一可以想象你在一個可繪制目錄中放置一個太小的圖像。 請檢查圖像尺寸是否從ldpimdpihdpixhdpi ,xxhdpi增加到xxxhdpi

默認像素尺寸適用於mdpi 32x32 ,適用於hdpi 48x48xhdpi 64x64

檢查我的計算器 ,它將為您計算正確的圖像尺寸。

使用drawable作為位圖大小,它使用位圖xml

如何在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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM