【问题标题】:Centering an image, horizontally水平居中图像
【发布时间】:2015-06-21 22:53:35
【问题描述】:

我刚刚开始使用我的第一个 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 补丁,而我的问题有更简单的解决方案。

我需要的非常简单 - 我希望在页面顶部区域显示一个徽标,水平居中,该徽标不会因 x 或 y 轴缩放而失真,但背景颜色会延伸到边缘水平显示。

如果九个补丁不能做到这一点,也许别的东西会。

【问题讨论】:

    标签: android imageview nine-patch


    【解决方案1】:

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

    另外,你有没有尝试过其他scale types?:

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

    如果图像仍然缩放不正确,您还可以设置android:adjustViewVounds参数,以使其更好地满足您的需求

    【讨论】:

    • 设置背景的问题是图片的两侧颜色不同。我一直在使用纯色背景色在两个视图之间平铺图像,但我无法让它工作。
    • 这看起来可行。或者,至少,它在预览中看起来不错。
    【解决方案2】:

    使用 android:scaleType="fitXY"。这个属性是 9patch 工作所必需的。此外,在使用 9patch 时还需要注意以下几点。

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

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

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

    android:background="@drawable/splash_logo"
    

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

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

    希望这有助于你的身高增长,干杯!

    【讨论】:

    • 这样,图像填充了该区域,但根本没有缩放。
    • 那么问题出在你的 9patch 上。您可能没有正确应用它。尝试不进行 9patch 编辑的徽标。对于一般的标志,9patch 可能不适用。将 9patch 用于背景框架或类似的东西。
    【解决方案3】:

    你可以试试这样的:

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

    这是一种变通方法,一种“丑陋”的解决方案。

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

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 2013-05-18
      • 2019-02-10
      相关资源
      最近更新 更多