即使图像足够大,位图重力也会设置为居中,无法填充屏幕

Mik*_*koP 5 android image bitmap android-layout android-drawable

我的Android项目中有一个RelativeLayout。它的背景设置为位图:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:gravity="center"
    android:src="@drawable/splash2" />
Run Code Online (Sandbox Code Playgroud)

splash2是尺寸为2560x1440像素的PNG图片。我没有直接将布局的背景设置为图像,因为默认的缩放模式(或重力)fill可以拉伸图像以适合屏幕。使用center它应该从中心获取正确尺寸的图像,并显示未缩放的图像。如果是垂直的1080x1920屏幕,则应占用较大空间并将其放置在布局中。

但是,我有一个问题。该图像比当今市场上的任何屏幕都要大。不过,我的Nexus 7屏幕分辨率为1920x1080,但图像周围仍带有边框。布局设置为全屏。图像垂直缩小。

在此处输入图片说明

我该如何解决?

Jac*_*eng 6

您可以使用android:gravity="fill"覆盖垂直和水平方向


小智 5

对于启动图像,请尝试重力=“中心|填充”

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

    <item>
        <bitmap
            android:gravity="center|fill"
            android:src="@drawable/fondo" />
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

  • 错误,“center|fill”与独立的“fill”具有相同的效果=图像被拉伸,这很糟糕 (2认同)

Mik*_*koP 4

ImageView 的缩放类型centerCrop正是我想要的。不幸的是我无法为位图指定此属性。我将启动屏幕布局更改为 FrameLayout,并添加了彼此重叠的 ImageView 和 TextView。这样我就能够实现我想要的。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SplashScreen"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@drawable/splash2"
        android:scaleType="centerCrop" />

     <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <TextView
            android:id="@+id/roadSignName"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:background="#FFF"
            android:gravity="center_vertical|center_horizontal"
            android:padding="10dp"
            android:text="My program"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textColor="#000000"
            android:textSize="40sp" />
    </RelativeLayout>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)