XML中的Android位图图像大小

Erm*_*bel 50 xml android bitmap

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

<bitmap
    android:src="@drawable/Icon"
    android:gravity="center"/>
Run Code Online (Sandbox Code Playgroud)

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

我试过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>
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*olo 40

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

<item
    android:width="230dp"
    android:height="70dp">
    <bitmap
        android:gravity="fill_horizontal|fill_vertical"
        android:src="@drawable/screen" />
</item>
Run Code Online (Sandbox Code Playgroud)

您可以使用重力设置项目宽度和高度,并在其中缩放位图.

我知道这是一个古老的问题,但也许有人会觉得它很有用.

警告:

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

  • 嗨,android:width和android:height仅用于api 23+,所以它不是很有用. (24认同)
  • 这对我们有用.我们需要在项目中添加`android:gravity ="center"`属性. (5认同)

Max*_*axF 34

只是用

<item
    android:width="200dp"
    android:height="200dp"
    android:drawable="@drawable/splash_background"
    android:gravity="center" />
Run Code Online (Sandbox Code Playgroud)

代替

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

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

</item>
Run Code Online (Sandbox Code Playgroud)

  • 需要API 23或更高版本 (22认同)

Kev*_*per 23

如果你想减少的宽度和高度,使其适合在屏幕上,你不需要设置精确的尺寸,你可以简单地设置leftright父项.这实际上会在图像周围添加边距,因此占用的空间更少:

<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>
Run Code Online (Sandbox Code Playgroud)

理想的情况是,你应该上传不同大小的图像,每个屏幕分辨率(例如hdpi,xxhdpi),然后你就不需要以编程方式设置大小的.您可以在此处查看完整列表.

  • 谢谢你的建议.在布置启动画面时,您不能只设置图像的大小,这似乎很疯狂. (6认同)
  • 使用这种方法时,我最终会得到一个拉伸的图像,或者,如果我提供 `android:gravity="center"`,无论边距如何,图像仍然会离开屏幕。 (5认同)
  • @ahalls你**可以**设置大小如果你膨胀布局,但出于性能原因,初始屏幕通常使用drawables而不是布局,这不允许设置大小:( (2认同)

小智 22

这个我用来将我的 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>
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案,对我有用,仅供参考,需要 API 23+ (2认同)

小智 13

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

<?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>
Run Code Online (Sandbox Code Playgroud)

  • 可绘制项目的宽度和高度需要API 23+。 (3认同)

Yak*_*pan 7

Android Developers我看到 Bitmap XML 没有允许您更改其大小的标记。您需要通过一些图形应用程序(如 GIMP)来执行此操作。正如@Kevin Cooper 已经说过的,理想情况下,您需要为不同的屏幕类型创建不同的资源集(具有不同的大小)。

但是您仍然可以使用 中的 width 和 height 属性调整它的大小ImageView,而不是创建不同大小的位图:

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:scaleType="center"
    android:src="@drawable/Icon" />
Run Code Online (Sandbox Code Playgroud)

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

// 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"/>
Run Code Online (Sandbox Code Playgroud)

另一种重用方法是为一个布局创建单独的布局文件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>
Run Code Online (Sandbox Code Playgroud)

正如@Nicolo 还指出的那样,形成 API 23,可以设置android:widthandroid:height"设置项目。

  • 在图层列表中不起作用,例如:在 android:drawableLeft 属性中用于 xml 中的自定义背景可绘制大小。问题是在图层列表中调整位图大小,响应不正确。 (25认同)
  • 问题的答案不正确,可绘制资源 xml 中不支持 ImageView 标签 (3认同)

小智 7

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

<item
  android:height= "250dp"
  android:width= "250dp"
  android:gravity="center">
   <bitmap
    android:gravity="fill_horizontal|fill_vertical"
    android:src="@mipmap/ic_launcher"/>
</item>
Run Code Online (Sandbox Code Playgroud)


Aru*_*ati 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>
Run Code Online (Sandbox Code Playgroud)