我有图片菜单。我有大图像72x72。 在活动布局中,我正在使用:
android:layout_height="55dip"
android:layout_width="55dip"
android:scaleType="fitCenter" - this works fine.
但是在菜单项中,我不知道如何做同样的事情。
答案 0 :(得分:10)
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu,menu);
menu.findItem(R.id.menu_Help).setIcon(resizeImage(R.drawable.ic_noaction_help,108,108));
return true;
}
private Drawable resizeImage(int resId, int w, int h)
{
// load the origial Bitmap
Bitmap BitmapOrg = BitmapFactory.decodeResource(getResources(), resId);
int width = BitmapOrg.getWidth();
int height = BitmapOrg.getHeight();
int newWidth = w;
int newHeight = h;
// calculate the scale
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0,width, height, matrix, true);
return new BitmapDrawable(resizedBitmap);
}
答案 1 :(得分:1)
Kostadin上面回答的一个改进是通过使用http://developer.android.com/training/displaying-bitmaps/load-bitmap.html描述的方法避免创建他调用BitmapOrg
的第一个位图来节省内存。
答案 2 :(得分:-1)
内部onCreateOptionsMenu
:
getMenuInflater().inflate(R.menu.my_menu, menu);
menu.findItem(R.id.action_overflow).setIcon(resizeImage(R.mipmap.more,72,72));