2012-04-20 60 views
6

我需要將ImageView,它是LinearLayout的直接子元素左移一位。在ImageView上設置負邊距而不是ImageView,但不是圖像

發生了什麼:視圖被移位(可以看到「bounding box」被移動,使用android佈局管理器),但drawable保持在同一個位置。

此外,如果我將邊距設置得足夠低,那麼可以在右側切出繪圖。

enter image description here

這是爲什麼?有什麼建議?

  • 說明:我必須將圖像轉移到左側。這意味着包含佈局邊界的一點點。

回答

4

看起來元素總是在父元素邊界之外被剪切(也是用clipChildren = false)。

一種解決方案是爲除了要移動的項目之外的所有內容創建額外的容器佈局。然後將容器佈局向相反的方向移動。

例如,轉移-10dip:

<Original container ...> 
    <Item to be shifted/> 
    <New container with margin 10dip> 
     <Previous content of Original container ... /> 
    </New container with margin 10dip> 
</Original container> 
+0

感謝您的回答,但請您提供真實代碼示例嗎?我無法理解。先謝謝你。 – Natasha 2013-01-17 19:05:41

+0

嗨。仍然需要它?對不起,沒有時間......只是把你想要「移動」的項目和其餘部分(在包含的佈局中)放在相對或框架佈局中,而不是將項目移動到左邊,將「休息」移動到rigt ... – Ixx 2013-02-05 22:14:41

+0

感謝您的評論。 – Natasha 2013-02-07 09:05:00

1

爲什麼使用負邊距?對ImageView的另一側使用更多的正數來移動圖像的方向,即如果要將圖像移到左側,則在右側使用更多的正邊距。

+0

我必須將圖像左移。這意味着包含佈局邊界的一點點。 – Ixx 2012-04-20 12:37:10

+0

嘗試在xml中使用'android:adjustViewBounds =「true」'來自動調整視圖的邊界。 – orchidrudra 2012-04-20 12:56:05

+0

沒有幫助::::/ – Ixx 2012-04-20 19:20:03

3

如果容器有足夠的填充您可以設置它的clipToPadding和使用負邊距!