2014-01-08 104 views
8

的動作條圖標想 imageenter image description here如何更改actionBar圖標大小?

當設備分辨率爲1920×1080及以上的Android 4.2,圖標的大小看起來非常小: imageenter image description here

(安卓4.1是正確的)

我問題看起來像i-want-to-change-actionbar-icon-size

的圖標圖像尺寸是113x40,然後我使用getActionBar()的getHeight()來獲得動作條高度是56

menu.xml文件:

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

<item 
    android:id="@+id/menu_buyer" 
    android:icon="@drawable/buyer_bts" 
    android:showAsAction="ifRoom"/> 
<item 
    android:id="@+id/menu_exhibition_bt" 
    android:icon="@drawable/exhibition_bt" 
    android:showAsAction="ifRoom"/> 
<item 
    android:id="@+id/menu_oj" 
    android:icon="@drawable/download_bt" 
    android:showAsAction="ifRoom"/> 

我嘗試以下方法但不起作用:

  1. 創建更大的圖標圖像(ex.170x60)然後放入drawable- hdpi(xhdpi,xxhdpi ...等)文件夾

  2. 使用menu.findItem(R.id.menu_buyer).setIcon(resizeImage(int resId,int w,int h));調整大小圖標

  3. 添加樣式<項目名稱=「機器人:actionBarSize」在style.xml 然後設置主題清單文件

> 200dp < /項目>有沒有一種方法可以顯示圖標是否正確?

回答

0

請保持圖片的大小和分辨率。像:

- drawable-ldpi (it need resolution or ppi is ~120)(keep small size image) 
- drawable-mdpi (it need resolution or ppi is ~160)(keep normal size image) 
- drawable-hdpi (it need resolution or ppi is ~240)(keep larger size image) 
- drawable-xhdpi (it need resolution or ppi is ~320)(keep xlarger size image) 

你也可以學習這個參考鏈接http://developer.android.com/guide/practices/screens_support.html

8

來不及回答,但是,我找到了答案

的方式是相當簡單的。 1,將drawable轉換成位圖,調整大小並重新轉換成drawable並獲取菜單項並將圖標設置爲新的drawable。

添加這些活動重新大小的方法,

private Bitmap resizeBitmapImageFn(
     Bitmap bmpSource, int maxResolution){ 
    int iWidth = bmpSource.getWidth(); 
    int iHeight = bmpSource.getHeight(); 
    int newWidth = iWidth ; 
    int newHeight = iHeight ; 
    float rate = 0.0f; 

    if(iWidth > iHeight){ 
     if(maxResolution < iWidth){ 
      rate = maxResolution/(float) iWidth ; 
      newHeight = (int) (iHeight * rate); 
      newWidth = maxResolution; 
     } 
    }else{ 
     if(maxResolution < iHeight){ 
      rate = maxResolution/(float) iHeight ; 
      newWidth = (int) (iWidth * rate); 
      newHeight = maxResolution; 
     } 
    } 

    return Bitmap.createScaledBitmap(
      bmpSource, newWidth, newHeight, true); 
} 

,並在onCreateOptionsMenu添加工作

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 

    Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.ic_navigation_drawer); //Converting drawable into bitmap 
    Bitmap new_icon = resizeBitmapImageFn(icon, 50); //resizing the bitmap 
    Drawable d = new BitmapDrawable(getResources(),new_icon); //Converting bitmap into drawable 
    menu.getItem(0).setIcon(d); //choose the item number you want to set 
    return true; 
} 
+0

不是4.4 – Machado

+0

@Holmes哦工作真的,我還沒有嘗試過呢在4.4中,但是,那麼你知道爲什麼嗎? –