Как контролировать размер изображения в меню? - PullRequest
6 голосов
/ 14 февраля 2012

У меня есть меню с изображениями. У меня большие картинки 72х72. В макете активности я использую:

android:layout_height="55dip"
android:layout_width="55dip"
android:scaleType="fitCenter" - this works fine.

Но в пунктах меню я не знаю, как сделать то же самое.

Ответы [ 3 ]

10 голосов
/ 22 февраля 2012
@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 голос
/ 05 января 2013

Улучшение ответа Костадина, приведенного выше, состоит в том, чтобы сэкономить память, избегая создания первого растрового изображения, которое он называет BitmapOrg, используя подход, описанный http://developer.android.com/training/displaying-bitmaps/load-bitmap.html.

0 голосов
/ 07 марта 2017

Внутри onCreateOptionsMenu:

getMenuInflater().inflate(R.menu.my_menu, menu);
menu.findItem(R.id.action_overflow).setIcon(resizeImage(R.mipmap.more,72,72));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...