【问题标题】:What is the difference between src and background of ImageViewImageView的src和背景有什么区别
【发布时间】:2022-03-02 20:15:54
【问题描述】:

我对使用srcbackground 作为ImageView 感到困惑。

我知道前者是指ImageView的内容,后者是指ImageView的背景。

但是如何决定使用哪一个呢?我看不出有什么区别。

【问题讨论】:

    标签: android background imageview src


    【解决方案1】:

    所有视图都可以拍摄背景图片。

    srcImageView 具有附加功能:

    • 不同的scaling types
    • adjustViewBounds 用于设置边界以匹配图像尺寸
    • 一些转换,例如 alpha 设置

    您可以在the docs 中找到更多内容。

    【讨论】:

      【解决方案2】:
      1. 当您使用android:background 时,图像将被设置为适合ImageView 区域(即根据ImageView 的宽度和高度)。图片比ImageView小还是大都没有关系。

      2. 当您使用android:src 时,图像将以其原始大小显示。不 自动缩放,调整会发生。 注意:使用 android:src,我们可以获得 adjustViewBounds 属性的额外好处

      【讨论】:

        【解决方案3】:

        如果您将图像设置为 ImageView 的背景,则图像将缩放到 ImageView 的任何大小。除此之外, src 是前景图像,背景是背景图像。就像它所暗示的那样。

        【讨论】:

        • 为什么 ImageView 需要一个前景一个背景
        • @IgorGanapolsky 这样我们就可以为不同的状态设置叠加层,例如聚焦、按下等。
        • @dgngulcan 材质组件库内置了所有这些功能。
        • @IgorGanapolsky 很久以前,没有材质组件库:)
        【解决方案4】:

        ImageView中XML属性src与背景的区别:

        背景会根据ImageView组件给定的长度进行拉伸,SRC会保持原图的大小而不进行拉伸。 SRC为图片内容(前景),BG为背景,可以同时使用。

        另外ScaleType只适用于SRC; BG可以设置透明度,例如ImageButton中,可以使用Android:scaletype来控制图片如何被缩放,示例代码如下:

         <ImageView 
          android:id="@+id/img"
          android:layout_height="60dip"
          android:layout_width= "60dip"
          android:src="@drawable/logo" 
          android:scaleType="centerInside" 
          android:layout_centerVertical= "true"/>
        

        如果您有任何疑问,请随时提出疑问。

        【讨论】: