2010-04-06 10 views
36

Próbowałem już wszystkich typów tematów, ale wszystkie z nich sprawiają, że obraz znajduje się w lewym rogu widoku obrazu.android: jak wyrównać obraz w poziomym środku widoku obrazu?

<ImageView 
    android:id="@+id/image" 
    android:scaleType="centerInside" 

    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 

    android:layout_marginRight="6dip" 
    android:background="#0000" 
    android:src="@drawable/icon1" /> 

Odpowiedz

38

Twój ImageView ma atrybut wrap_content. Myślę, że obraz jest wyśrodkowany wewnątrz widoku obrazu, ale widok obrazu nie jest wyśrodkowany w widoku nadrzędnym. Jeśli masz tylko podgląd obrazu na ekranie spróbuj match_parent zamiast wrap_content. Jeśli masz więcej niż jeden widok w układzie, musisz wycentrować widok obrazu.

+0

ja mam więcej niż jeden widok w układzie. Co dokładnie masz na myśli przez "wyśrodkowanie obrazu"? – Yang

+0

Sam obraz powinien znajdować się wewnątrz komponentu układu. Ten element układu otaczającego może układać elementy potomne ... Jeśli mógłbyś opublikować cały plik układu, mógłbym spróbować podać ci bardziej precyzyjne wskazówki. – Janusz

+5

Yang - Myślę, że Twoim problemem jest to, że rodzic jest układem względnym, a nie układem liniowym. Jeśli tak, to spróbuj android: layout_centerHorizontal = "true" zamiast layout_gravity. –

29

Można centrum samego ImageView za pomocą:

android:layout_centerVertical="true" lub android:layout_centerHorizontal="true" Na pionowej lub poziomej. Lub do centrum wewnątrz jednostki dominującej:

android:layout_centerInParent="true"

Ale to brzmi jak próbujesz wyśrodkować źródłowy rzeczywisty obraz wewnątrz samego ImageView, których nie jestem pewien na.

+13

uwaga: jest to prawda, gdy rodzic jest RelativeLayout –

+0

Jak to zrobić, gdy rodzic jest LinearLayout? – VikramV

+1

Mam to !! Domyślam się, że jeśli twój rodzic jest LinearLayout, możesz ustawić atrybut w jego dziecięcej ImageView - android: layout_gravity = "center". To zadziałało dla mnie. Dzięki. – VikramV

64
<ImageView 
android:id="@+id/img" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
/>; 
+15

uwaga: jest to prawdą, gdy rodzic jest LinearLayout lub podobny –

+32

Jeśli rodzic jest "RelativeLayout", użyj 'android: layout_centerHorizontal =" true "' –

+0

To rozwiązanie działa, nawet jeśli Android Studio nie wyświetla tego atrybutu. – CoolMind

1

Używanie "fill_parent" sam na layout_width rade:

<ImageView 
    android:id="@+id/image" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="6dip" 
    android:background="#0000" 
    android:src="@drawable/icon1" /> 
9

To działa na mnie, gdy dostosowanie widoku obrazu w linearlayout.

<ImageView android:id="@android:id/empty" 
    android:src="@drawable/find_icon" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center" 
    android:scaleType="center" 
    /> 
0

Użyj tego atrybutu: android: layout_centerHorizontal = "true"

1

Spróbuj:

android:layout_height="wrap_content" 
android:scaleType="fitStart" 

na obrazie w RelativeLayout

2

dla mnie android:gravity="center" wystarczyły w element układu nadrzędnego.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/fullImageView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:contentDescription="@string/fullImageView" 
     android:layout_gravity="center" /> 

</LinearLayout> 
-1

To jest kod w xml, jak wyśrodkować ImageView, użyłem "layout_centerHorizontal".

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_centerHorizontal="true" 
    > 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img2" 
    /> 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img1" 
     /> 
</LinearLayout> 

albo ten drugi przykład ...

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:gravity="center_horizontal" 
    > 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img2" 
    /> 
    <ImageView 
     android:layout_width="40dp" 
     android:layout_height="40dp" 
     android:src="@drawable/img1" 
     /> 
</LinearLayout> 
+0

Jeśli ma to być odpowiedź, dodaj wyjaśnienie. Jeśli ma to być pytanie, zadaj nowe pytanie. –

6

Spróbuj kod:

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center_horizontal"> 

      <ImageView 
       android:id="@+id/imgBusiness" 
       android:layout_width="40dp" 
       android:layout_height="40dp" 
       android:src="@drawable/back_detail" /> 
</LinearLayout> 
+0

Proszę podać wyjaśnienia tekstowe. –

+0

To działa dla mnie, dziękuję :) –

Powiązane problemy