XML中的Android位图图像大小

时间:2014-04-15 09:15:12

标签: android xml bitmap

在我的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>

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

9 个答案:

答案 0 :(得分:33)

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

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

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

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

警告:

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

答案 1 :(得分:21)

如果您希望缩小宽度和高度以使其适合屏幕,并且您不需要设置确切的尺寸,则可以在父级上设置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>

但理想情况下,您应为每个屏幕分辨率上传不同尺寸的图片(例如hdpixxhdpi),然后您根本不需要以编程方式设置尺寸。您可以看到完整列表here

答案 2 :(得分:17)

只需使用

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

答案 3 :(得分:11)

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

FOREIGN KEY (product_category, product_id)
      REFERENCES product(category, id)'
FOREIGN KEY (product_category, product_id)
      REFERENCES second_table(category, id)

答案 7 :(得分:0)

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 drawable 资源

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 vector drawable 资源 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:width="20dp" android:height="13dp"

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

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

对于较低的 API 级别,或者干脆省略宽度和高度约束,并直接在 vector drawable 中设置 dp(它适用于所有 API 级别)。

答案 8 :(得分:-7)

Android Developers我看到没有Bitmap 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:widthandroid:height"设置为项目。