24

I tried to use this code

<item android:id="@+id/male_button" android:layout_width="46dp" android:layout_height="56dp" android:layout_gravity="right" android:icon="@drawable/icon_male" android:showAsAction="always" android:title="i"/> <item android:id="@+id/female_button" android:layout_width="46dp" android:layout_height="56dp" android:layout_gravity="right" android:icon="@drawable/icon_female" android:showAsAction="always" android:title="i"/> 

and I changed android:layout_width="46dp" to android:layout_width="30dp" but I still have the same size the desired image is

enter image description here

and I now have this

enter image description here

How can I change the icons to be as the first picture ?

4
  • Please refer to [this answer][1]. android:minWidth meets your needs. [1]: stackoverflow.com/a/10085862/1301173 Commented Oct 14, 2013 at 1:53
  • did you find any solution for this problem? Commented May 27, 2015 at 5:28
  • Did someone found anything on this topic? Commented Aug 25, 2015 at 13:57
  • Will it work for moving the icon from high res to low resolution folders? for example: from xhdpi to sdpi Commented Mar 2, 2016 at 5:02

5 Answers 5

24

To reduce the space between actions icons, in your styles.xml you need to create a actionButtonStyle and referencing it your main theme (ex: "AppTheme").

1st step (put the two sentences):

<style name="AppTheme" parent="Theme.AppCompat.Light"> ... <item name="android:actionButtonStyle">@style/myActionButtonStyle</item> <item name="actionButtonStyle">@style/myActionButtonStyle</item> ... </style> 

2nd step (the parameter "android:width" is the great secret):

<style name="myActionButtonStyle" parent="Widget.AppCompat.ActionButton"> <item name="android:minWidth">30dp</item> <item name="android:maxWidth">48dp</item> <item name="android:width">38dp</item> </style> 

enjoy it

Sign up to request clarification or add additional context in comments.

2 Comments

this did not change the size of my icon
This worked perfectly for my action bar icons. Thanks!
2
private String[] tabnames; final int[] ICONS = new int[] { R.drawable.a, R.drawable.b, R.drawable.c,} tabnames = getResources().getStringArray(R.array.tabnames); 

Those are the arrays made up here and in res/values/strings of your drawable names and your tab names

actionBar = getActionBar(); for (int i=0; i < tabnames.length; i++) { 

Every time we get a tabname we add an icon for it

 Drawable dr = getResources().getDrawable(ICONS[i]); Bitmap bitmap = ((BitmapDrawable) dr).getBitmap(); Drawable d = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(bitmap, 50, 50, true)); 

Then we change get icon from array and make it a drawable with whatever size we want and add it to the actionbar.

 actionBar.addTab(actionBar.newTab().setText(tabnames[i]) .setIcon(d) .setTabListener(this)); } 

Comments

0

I have solved by moving png files to drawable-xhdpi folder.

Comments

0

You may find my solution a bit odd. But it actually worked for me that's why I'm sharing it.

Instead of changing the style attribute just increase the padding of the image using some editing software (like Photoshop or something).

By doing so Actionbar/Toolbar icon size reduces according to your requirement.

1 Comment

(This post does not seem to provide a quality answer to the question. Please either edit your answer, or just post it as a comment to the question).
0

Here's how I set an icon to 24x24px:

override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(menuResId, menu) val actionSearch = menu.findItem(R.id.actionSearch) val searchBitmap = ContextCompat.getDrawable(this, R.drawable.ic_search)?.toBitmap() searchBitmap?.let { actionSearch?.icon = BitmapDrawable(resources, Bitmap.createScaledBitmap(it, 24, 24, true)) } return true } 

Since I'm setting the icon here, I don't need to set it in menu_option.xml, but of course it's better to set it there too just in case. Also the dimensions here are in pixels so be sure to convert them to dips if you use that.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.