[英]Android Action Bar SearchView Menu Icon Size
我已經在活動的操作欄中實現了SearchView
,它運行正常,並且會在Galaxy Nexus和大多數模擬器上按預期顯示。 但是在Galaxy Note 10.1和具有平板電腦大小屏幕的模擬器上,它看起來像這樣:
如您所見,搜索圖標比其他圖標小得多。 如何獲取搜索圖標的圖標大小以匹配其他圖標? 或者我如何在大屏幕上統一圖標大小?
起初我想也許這個問題可能與drawable的大小有關,但在檢查之后我可以確認項目drawable-hdpi
, drawable-mdpi
和drawable-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建議這一點)。
該問題是由使用此工具的舊版本生成菜單圖標引起的。 因此,如果您遇到同樣的問題,可以嘗試使用最新版本生成新圖標。
唯一可以想象你在一個可繪制目錄中放置一個太小的圖像。 請檢查圖像尺寸是否從ldpi
, mdpi
, hdpi
, xhdpi
,xxhdpi增加到xxxhdpi
。
默認像素尺寸適用於mdpi 32x32
,適用於hdpi 48x48
和xhdpi 64x64
。
檢查我的計算器 ,它將為您計算正確的圖像尺寸。
使用drawable作為位圖大小,它使用位圖xml
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.