2012-04-20 17 views
6

Potrzebuję przesunąć ImageView, który jest bezpośrednim potomkiem LinearLayout, nieco w lewo.Ustawienie ujemnego marginesu na ImageView powoduje przesunięcie ImageView, ale nie obrazu

Co się dzieje: Widok jest przesunięte (można zobaczyć „ograniczająca pole” zostaje przesunięty z android menedżera układu), ale odkształcalne utrzymuje się w tym samym miejscu.

Wycinanie jest również wycinane po prawej stronie, jeśli ustawię margines wystarczająco niski.

enter image description here

Dlaczego tak jest? Jakakolwiek rada?

  • Wyjaśnienie: muszę przesunąć obraz w lewo. Oznacza to trochę poza granicami układu zawierającego.

Odpowiedz

4

Wygląda na to, że elementy są zawsze obcięte, gdy wychodzą poza granice rodzica (również z clipChildren = false).

Rozwiązaniem jest utworzenie dodatkowego układu kontenera dla wszystkiego oprócz elementu, który ma zostać przesunięty. A następnie przesuń układ kontenera w przeciwnym kierunku.

Na przykład, aby przesunąć -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

Dziękuję za odpowiedź, ale czy mógłbyś podać nam przykład z prawdziwymi kodami? Nie mogłem tego zrozumieć. Z góry dziękuję. – Natasha

+0

Witam. Nadal go potrzebujesz? Niestety nie ma czasu ... po prostu umieść element, który chcesz "przesunąć", i resztę (w układzie zawierającym) w układzie względnym lub ramowym, a zamiast przesuwania elementu w lewo, zmień "reszta" na rigt ... – Ixx

+0

Dzięki za komentarz. – Natasha

1

Dlaczego używasz marżę ujemną? użyj pozytywu nieco bardziej do przeciwnej strony ImageView do kierunku, w którym chcesz przesunąć obraz, tj. jeśli chcesz przesunąć obraz w lewo, użyj więcej dodatniego marginesu w prawo.

+0

Muszę przesunąć obraz w lewo. Oznacza to trochę poza granicami układu zawierającego. – Ixx

+0

Spróbuj użyć 'android: adjustViewBounds =" true "' w xml, aby automatycznie dostosować granice widoku. – orchidrudra

+0

Nie pomogło ::::/ – Ixx

3

Jeśli pojemnik ma wystarczającej wyściółkę można ustawić jego clipToPadding do fałszywy i używać marżę ujemną!