2013-03-03 14 views
6

Mam poziomy układ liniowy, który zawiera 3 widoki obrazu. Każdy widok obrazu zawiera ten sam obraz, który ma wymiary 200 x 200 pikseli. Oto mój układ xml:LinearLayout ImageView Zmień rozmiar wszystkich szerokości obrazu tak, aby pasował

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context=".MainActivity" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/image200" /> 

     <ImageView 
      android:id="@+id/imageView2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/image200" /> 

     <ImageView 
      android:id="@+id/imageView3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/image200" /> 

    </LinearLayout> 

</RelativeLayout> 

A oto jak to wygląda:

linear layout test screenshot

Zauważ, że trzeci obraz z lewej strony jest przeskalowane Zakładam, ponieważ nie ma wystarczająco dużo nieruchomości do zawierają 3 x 200 pikseli szerokich obrazów.

To, co wolałbym zrobić, to zamiast zmniejszać tylko ostatni obraz, wszystkie trzy obrazy są zmieniane równomiernie, tak aby wszystkie pasowały do ​​siebie na ekranie. Jak skonfigurować układ, aby równomiernie pasował do wszystkich trzech obrazów?

Dziękuję

UPDATE - po zmianie moich ustawień oto co wszystko wygląda tak:

updates

Zauważ, że granica wokół widzenia obrazu jest nadal 200 px wysokie. Dlaczego to się dzieje?

Odpowiedz

11

ustawić szerokość i wysokość do match_parent dla imageviews i ustawić layout_weight = 1 dla wszystkie widoki obrazu. Ustaw także atrybut android:scaleType="fitXY"

+0

ah to dziękuję! –

+0

android: scaleType = "fitXY" jest bezużyteczne, ponieważ layoutHeight jest w trybie zawartości wrapa – Guian

+0

działało tak, jak wskazałem powyżej, ale problem polegał na skalowaniu szerokości obrazów, ale nie na wysokości, co powodowało, że proporcje obrazu były wszystkie pomieszane . usunięcie dopasowania XY powoduje zmianę rozmiaru obu wymiarów. dzięki! –

1

dokonać trzy obrazy o szerokości 0DP

i dodać im layout_weight z 1

;)

<ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:src="@drawable/image200" /> 
1

@JanTacci Odnośnie do pytania uzupełniającego "Pamiętaj jednak, że mimo że obraz został zmniejszony, faktyczna wysokość układu wciąż wynosi 200 pikseli. Dlaczego tak się dzieje?"

prostu miałem ten sam problem i naprawić go, dodając tę ​​właściwość do każdego ImageView:

android:adjustViewBounds="true" 
3

To działało idealnie dla mnie:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ImageView 
     android:adjustViewBounds="true" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

    <ImageView 
     android:adjustViewBounds="true" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

    <ImageView 
     android:adjustViewBounds="true" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

</LinearLayout> 

szerokości Układ gdy ustawiono 0DP, szerokość układu jest tym, co pojawiło się w obrazie. I tutaj szerokość układu LinearLayout jest odpowiednikiem rodzica. Więc zajmie całą szerokość, a jak na szerokość układu obrazów, zajmują one miejsce w stosunku do ich wagi.

+0

Proszę wyjaśnij swoją odpowiedź! – Mazz

+1

@Mazz: dodano krótkie wyjaśnienie. Daj mi znać, jeśli coś jest nadal mylące. – blackjack

Powiązane problemy