我想要改变操作栏图标的大小。

24

我试过使用这段代码

<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"/>

我把android:layout_width="46dp"改为android:layout_width="30dp",但仍然是相同的大小,期望的图片为

enter image description here

现在我有的是

enter image description here

如何将图标更改为第一张图片?


请参考这个回答。android:minWidth 可以满足你的需求。 - Xieyi
你找到这个问题的解决方案了吗? - Crawler
有人在这个话题上找到了什么吗? - Machado
它能够将图标从高分辨率文件夹移动到低分辨率文件夹吗?例如:从xhdpi到sdpi。 - LiuWenbin_NO.
5个回答

24
为了缩小操作图标之间的间距,在您的styles.xml文件中需要创建一个actionButtonStyle,并引用它到你的主题中(例如:"AppTheme")。
第一步(将这两句话放在一起): 在您的styles.xml文件中创建一个actionButtonStyle,并引用它到您的主题中(例如:"AppTheme"),以缩小操作图标之间的间距。
<style name="AppTheme" parent="Theme.AppCompat.Light">
  ...
  <item name="android:actionButtonStyle">@style/myActionButtonStyle</item>
  <item name="actionButtonStyle">@style/myActionButtonStyle</item>
  ...
</style>

第二步(参数“android:width”是一个重要的秘密):

<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>

享受它


3
这并没有改变我的图标大小。 - ChumiestBucket
这对我的操作栏图标完美地起作用了。谢谢! - Ted Henry

2
private String[] tabnames;
final int[] ICONS = new int[] {
        R.drawable.a,
        R.drawable.b,
        R.drawable.c,}
tabnames = getResources().getStringArray(R.array.tabnames);

这些数组是由此处和res/values/strings中的可绘制名称和选项卡名称组成的。
actionBar = getActionBar();
    for (int i=0; i < tabnames.length; i++)
    {

每次获取选项卡名称时,我们都会为其添加一个图标。
        Drawable dr = getResources().getDrawable(ICONS[i]);
        Bitmap bitmap = ((BitmapDrawable) dr).getBitmap();
        Drawable d = new BitmapDrawable(getResources(), 
        Bitmap.createScaledBitmap(bitmap, 50, 50, true));

然后我们从数组中获取图标,并将其转换为我们想要的任何大小的可绘制对象,然后将其添加到操作栏中。

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

0

你可能会觉得我的解决方案有点奇怪。但它确实对我有效,所以我想分享一下。

不要改变样式属性,而是使用一些编辑软件(如Photoshop或其他软件)增加图像的填充

这样做可以根据你的需求减小Actionbar/Toolbar图标的大小。


1
这篇帖子似乎没有为问题提供一个高质量的答案。请编辑您的回答,或将其作为评论发布到问题中。 - sɐunıɔןɐqɐp

0

我已经通过将PNG文件移动到drawable-xhdpi文件夹中解决了这个问题。


0

这是我如何将图标设置为24x24像素:

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
}

由于我在这里设置了图标,所以我不需要在menu_option.xml中设置它,但当然最好也在那里设置一下以防万一。此外,这里的尺寸是以像素为单位的,因此如果您使用dips,请确保将它们转换为dips。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接