XML 中的 Android 位图图像大小

问题描述 投票:0回答:11

在我的 XML 文件中,我使用位图,如下所示

<bitmap
    android:src="@drawable/Icon"
    android:gravity="center"/>

这里图标的图像宽度超出了屏幕。

我尝试了 android:width="100dp" 等等。但它不起作用。

完整的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape android:shape="rectangle">
            <stroke android:width="3dp" android:color="@color/black" />
            <solid android:color="@color/bg_green" />
        </shape>
   </item>
   <item>
    <bitmap
        android:src="@drawable/Icon"
        android:gravity="center"/>
    </item>
</layer-list>

如何减小上面位图的宽度和高度?

android xml bitmap
11个回答
105
投票

仅限 API 23 或更高版本

只需使用

<item
    android:width="200dp"
    android:height="200dp"
    android:drawable="@drawable/splash_background"
    android:gravity="center" />

相反

<item
    android:left="200dp"
    android:right="200dp">

    <bitmap
        android:src="@drawable/splash_background"
        android:gravity="center" />

</item>

71
投票

虽然位图没有宽度和高度参数,但您可以使用重力和项目宽度/高度来设置位图大小。

<item
    android:width="230dp"
    android:height="70dp">
    <bitmap
        android:gravity="fill_horizontal|fill_vertical"
        android:src="@drawable/screen" />
</item>

您可以使用重力设置项目的宽度和高度以及其内部的缩放位图。

我知道这是一个老问题,但也许有人会发现它有用。

警告:

正如评论中已经提到的,此方法仅适用于 API 级别 23 (Android 6.0) 及更高版本。


33
投票

如果您想减小宽度和高度以适合屏幕,并且不需要设置精确的尺寸,则只需在父项上设置

left
right
即可。这实际上会在图像周围添加边距,从而占用更少的空间:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:left="20dp"
        android:right="20dp">

        <bitmap
            android:src="@drawable/Icon"
            android:gravity="center" />

    </item>

</layer-list>

理想情况下,您应该为每个屏幕分辨率上传不同尺寸的图像(例如

hdpi
xxhdpi
),然后您根本不需要以编程方式设置尺寸。您可以在此处查看完整列表。


29
投票

我用这个来调整启动屏幕上的 mipmap 的大小。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
    <item android:drawable="@color/colorPrimary"/>
    <item
        android:width="200dp"
        android:height="200dp"
        android:gravity="center">
        <bitmap
            android:gravity="fill"
            android:src="@mipmap/ic_launcher"
            android:mipMap="true"/>
    </item>
</layer-list>

20
投票

尝试这样做,这对我有用:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item
    android:width="30dp"
    android:height="30dp"
    android:gravity="center"
  >
        <bitmap
       android:src="@drawable/screen"/>
  </item>

</layer-list>

8
投票

Android 开发人员 我看到位图 XML 没有允许您更改其大小的标签。您需要通过一些图形应用程序(例如 GIMP)来完成此操作。正如 @Kevin Cooper 所说,理想情况下,您需要为不同的屏幕类型创建不同的资源集(具有不同的大小)。

但是您仍然可以使用

ImageView
中的宽度和高度属性来调整它的大小,而不是创建具有不同大小的位图:

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:scaleType="center"
    android:src="@drawable/Icon" />

如果您想在其他地方重复使用此图像,您可以创建单独的样式并重复使用它:

// in styles.xml
<style name="Icon24x24">
    <item name="android:src">@drawable/Icon</item>
    <item name="android:gravity">center</item>
    <item name="android:layout_width">24dp</item>
    <item name="android:layout_height">24dp</item>
</style>

// in layout.xml
<ImageView style="@style/Icon24x24"/>

另一种重用方法,可能是为一个

ImageView
创建单独的布局文件,然后包含到其他布局中。

如果您想在图层列表中使用此

bitmap
,请参阅@Kevin Cooper 答案,因为他建议可以向
layer list item
添加填充:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:left="20dp"
        android:right="20dp">
        <bitmap
            android:src="@drawable/Icon"
            android:gravity="center" />
    </item>
</layer-list>

正如 @Nicolo 也指出的那样,从 API 23 中,可以将

android:width
android:height"
设置为 item。


7
投票

所以我通过输入以下内容解决了这个问题:

<item
  android:height= "250dp"
  android:width= "250dp"
  android:gravity="center">
   <bitmap
    android:gravity="fill_horizontal|fill_vertical"
    android:src="@mipmap/ic_launcher"/>
</item>

5
投票

完整的解决方案只需复制粘贴并更改图像路径

  <?xml version="1.0" encoding="utf-8"?>

 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

 <item
    android:gravity="center"
    android:width="286dp"
    android:height="176dp">

    <bitmap
        android:src="@drawable/logo"
        android:gravity="fill_horizontal|fill_vertical" />
   </item>
 </layer-list>

3
投票

我只是手动调整图像大小,然后它对我有用


2
投票

1.第1步:将

android:background=
添加到Spinner/AppCompatSpinner

 <androidx.appcompat.widget.AppCompatSpinner
            android:id="@+id/spinner"
            android:layout_width="match_parent"
            android:layout_height="@dimen/input_height"
            android:background="@drawable/shape_drop_down_normal"
            />
  1. shape_drop_down_normal.xml
     中创建 
    /drawable

2A) 如果您有用于 Spinner 位图的 ic_spinner_dropdown.png 可绘制 资源

shape_drop_down_normal.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:width="20dp"
        android:height="13dp"
        android:gravity="end|center_vertical">
        <bitmap
            android:src="@drawable/ic_spinner_dropdown"
            android:gravity="fill"
            android:mipMap="true"/>
    </item>
</layer-list>

2B) 如果您有用于 Spinner 位图的 ic_spinner_dropdown_vector.xml 矢量可绘制 资源

shape_drop_down_normal.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:width="20dp"
        android:height="13dp"
        android:gravity="end|center_vertical"
        android:drawable="@drawable/ic_spinner_dropdown_vector">
    </item>
</layer-list>
  1. 警告!

    android:宽度=“20dp” 安卓:高度=“13dp”

在图层列表中需要API 23+, 使用

android:left="20dp"
android:right="13dp" 

对于较低的 API 级别,或者简单地省略宽度和高度约束,并直接在矢量可绘制中设置 dp(它适用于所有 API 级别)。


0
投票

其他答案都不适合我,所以我不得不即兴发挥。 结果是:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#0000" />
            <size
                android:width="128dp"
                android:height="128dp" />
        </shape>
    </item>
    <item android:drawable="@drawable/ic_warning_amber_24" />
</layer-list>

这可能是 API 的一个很好的替代方案<23 devices. You can specify the size.

© www.soinside.com 2019 - 2024. All rights reserved.