【问题标题】:What is a correct way to place image over ImageView?将图像放置在 ImageView 上的正确方法是什么?
【发布时间】:2013-07-16 05:37:01
【问题描述】:

我是 android 开发的新手,仍然无法完全理解大小调整如何与不同的布局一起使用。我想在此模板中放置本书的预览:

我尝试使用 FrameLayout 来实现它。这个想法是预览图像的中心将正好是 png 背景的中心。代码如下:

<FrameLayout
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_weight=".5" >

  <ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/book_frame" />
  <ImageView
    android:id="@+id/previewImage"
    android:layout_width="83dp"
    android:layout_height="83dp"
    android:layout_gravity="center_vertical|center_horizontal"
    android:src="@drawable/abs__ab_bottom_solid_dark_holo" />
</FrameLayout>

布局生成器中的结果与我想要的完全一样:

在真机上是不同的:

我认为在其他分辨率上它也会与这两种变体不同。所以我的问题是如何同步这些图像,以便在任何调整大小和扭曲后预览将正确地适合封面? 可能的解决方案是从图像中删除边框并将其放在 previewImage 上。但是在应用中有几个类似的用例无法去除边框,所以我想为所有这些用例找到一个通用的解决方案。

【问题讨论】:

    标签: android android-layout imageview


    【解决方案1】:

    你的问题有你的答案。

    对于不同的屏幕分辨率,您的情况图像大小会发生什么。

    硬编码的东西总是会在你的情况下产生奇怪的结果 android:layout_width="83dp" android:layout_height="83dp"这段代码。

    查看link 这将指导您管理不同屏幕的drawables

    这是另一个link

    【讨论】:

      【解决方案2】:

      所以对我来说合适的解决方案是将内部图像的边框分离到它自己的 ImageView 中,将其插入到照片上的布局中,并为照片添加 1dp 填充。 布局变成这样:

              <FrameLayout
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_weight=".5" >
      
                  <ImageView
                      android:id="@+id/bookFrame"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:layout_gravity="center_vertical|center_horizontal"
                      android:src="@drawable/book_frame" />
      
                  <ImageView
                      android:id="@+id/previewImage"
                      android:layout_width="83dp"
                      android:layout_height="83dp"
                      android:layout_gravity="center_vertical|center_horizontal"
                      android:padding="1dp"
                      android:scaleType="centerCrop"
                      android:src="@drawable/abs__ab_bottom_solid_dark_holo" />
      
                  <ImageView
                      android:id="@+id/previewBorder"
                      android:layout_width="83dp"
                      android:layout_height="83dp"
                      android:layout_gravity="center_vertical|center_horizontal"
                      android:src="@drawable/preview_border" />
              </FrameLayout>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-21
        • 1970-01-01
        • 2019-05-21
        • 1970-01-01
        • 1970-01-01
        • 2015-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多