当layout_marginLeft或layout_marginTop设置得太高时,RelativeLayout中的ImageView很奇怪

时间:2011-11-09 22:32:25

标签: android android-layout

所以,我允许用户在屏幕上拖动包含ImageView的RelativeLayout(以及其他一些东西)。布局将ImageView包装在内,还有另一个相对布局将东西放在ImageView之上。像这样:

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

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="center"
    />

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

        ... a couple text views that also fill parent

    </RelativeLayout>
</RelativeLayout>

我正在动态设置ImageView上的src。

用户可以在另一个RelativeLayout中拖动布局,从而消耗全屏。当用户移动它时,我会更改左边距和上边距。 我看到一个奇怪的问题,当布局到达屏幕的右边或底边时,布局(以及它正在包装的ImageView)是......

  • 在布局右侧偏离屏幕右侧时,左侧剪裁
  • 在布局底部偏离屏幕底部的情况下,在顶部剪裁。

将布局拖动到屏幕的左边缘或上边缘时完全没有问题。

我尝试将ImageView的scaleType更改为所有其他值,然后才意识到问题似乎是封闭的RelativeLayout实际上导致它(例如,当我将ImageView的scaleType更改为fitXY时,图像被压缩到一个很小的尺寸当布局被拖离屏幕边缘时。)

我也试过切换我能找到的每个布局参数,包括clipChildren,clipPadding,adjustViewBounds,margin,padding等,以及无法真正起作用。我正在研究这个我认为应该使用默认参数的简单问题。要清楚的是,我期望发生的事情是,当我将布局拖离屏幕边缘时,屏幕外的部分根本就不再被看到了,屏幕上的内容保持原样。 / p>

1 个答案:

答案 0 :(得分:1)

我不认为保证金通常会允许部分视图在屏幕外呈现。您必须最大化保证金,以便保证金+大小&lt;父级大小(因此它保留在屏幕上)。但是你可以尝试设置一个负的右下边距(怀疑它会起作用)。