水平居中图像

Centering an image, horizontally

我刚刚开始开发我的第一个 Android 应用程序。我在 Android Studio 工作,我最初的问题是在第一页的顶部显示客户徽标。

我已经弄清楚如何将徽标变成 .9.png,并使用 android-drawable-importer 插件以各种所需的分辨率将其加载到项目中。

现在我的问题只是让图像在我的显示器上正确缩放。

目前,我正在使用 LinearLayout,ImageView 占据了显示器的顶部区域:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="12"
    >

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:src="@drawable/mylogo"
        />

    <!-- ... -->

</LinearLayout>

这样一来,我的徽标就占据了显示屏顶部的 1/6,水平居中,但它不会拉伸以填满显示屏的整个宽度。如果我添加 android:scaleType="fitXY",它会缩放以水平填充,但也会垂直缩放,导致我看不到徽标的顶部和底部。

有没有办法显示图像,使其垂直适合,水平填充?


我正在编辑它,以稍微扩大它的范围。可能是我太专注于制作 9-patch 工作,并且有更简单的解决方案来解决我的问题。

我需要的很简单 - 我想要一个徽标显示在页面的顶部区域,水平居中,徽标不会因 x 轴或 y 轴缩放而变形,但背景颜色会延伸到显示器的边缘,水平。

如果九个补丁不能做到这一点,也许其他东西可以。

使用android:scaleType="fitXY"。这个属性是 9patch 工作所必需的。此外,还有一些使用 9patch 时需要注意的事项。

1) 使用名称引用可绘制对象但不包括 .9.png(如果您仍在使用 tisk-,eclipse 中的自动完成功能将处理此问题提斯克)

2) 确保在主 /drawable 文件夹下只有 1 张图像(不是每个 dpi 文件夹的版本)

3) 图片必须使用 :background 指定,而不是 :src (这让我卡住了一段时间)

android:background="@drawable/splash_logo"

4) 确保包含它的图像和布局正在使用:

android:layout_width="fill_parent"
android:layout_height="fill_parent"

希望这对你的身高增长有所帮助,干杯!

使用透明背景的徽标,然后将 ImageViewandroid:background 设置为您需要的颜色怎么样?这样您就可以更好地控制徽标显示?

此外,您是否尝试过使用其他 scale types?:

尝试设置 android:scaleType="fitCenter",您的图像应显示在父图像的中央,并缩放以尽可能多地填充可用 space。

如果图像仍然缩放不正确,您还可以设置android:adjustViewVounds参数以使其更符合您的需要

您可以尝试这样的操作:

<ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:src="@drawable/your_logo_image"
        android:background="@color/your_logo_image_background_color"
        android:scaleType="fitCenter"/>

这是一种解决方法,一种 "ugly" 解决方案。

我同意 porfoliobuilder,九块图像可能不是徽标的最佳方法。