2017-05-26 2 views
1

In einem LinearLayout versuche ich eine ganze Zahl mit Bildern für Ziffern anzuzeigen. Ich möchte, dass die Nummer zentriert wird und die Bilder abhängig von der Anzahl der Ziffern skaliert werden.Verwenden von LinearLayout zum Anzeigen einer variablen Anzahl von Bildern

Mein erstes Layout mit zwei Ziffern:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
> 

<view 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    /> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    android:orientation="horizontal" 
    android:gravity="center" 
    > 
    <ImageView 
     app:srcCompat="@drawable/ic_digit_0" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" 
     android:layout_weight="1" 
     /> 
    <ImageView 
     app:srcCompat="@drawable/ic_digit_0" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" 
     android:layout_weight="1" 
     /> 
</LinearLayout> 

Und hier ist, wie es aussieht.

A) Bei 4 Ziffern sieht alles gut aus, die Ziffern passen horizontal und sind vertikal so hoch wie möglich.

4 digits scaled to fit

B) Mit vielen weiteren Ziffern, es skaliert noch gut an den verfügbaren Platz.

many more digits scale nicely

C), aber, wenn die Linearlayout Höhe reduziert wird, werden die 4 Ziffern getrennt und erscheinen Lücken zwischen ihnen.

images have separated

D) durch die layout_weight von jedem Image Entfernen, die 4 Stellen kommen wieder zusammen.

digits come back together

E) Aber wenn die Linearlayout Höhe erhöht wird, die Ziffern-Skala auf die volle Höhe der Ansicht und einige verschwinden horizontal aus dem Bild.

digits too large

Wie kann ich diese Ziffer der Größe von Bildern des verfügbaren Raum zu füllen, alle Ziffern zeigen und ohne Lücken zentriert werden, während ihre Skala Proportionen beibehalten, unabhängig von den Linearlayout Dimensionen?

Danke.

+0

haben Sie versucht android: scaleType versuchen seine Eigenschaften nach ur Anforderung – Pavan

+0

geben feste Größe von Bildansicht! Verwenden Sie ScaleType- – xbadal

+0

scaleType scheint nicht zu funktionieren. fitXY streckt oder quetscht die Bilder so, dass ihre Proportionen den Maßstab ändern. Das Fixieren der Bildgrößen erfordert Code-Berechnungen, die mit der Anzahl der Ziffern variieren. –

Antwort

0

Haben Sie versucht, ScaleType hinzuzufügen?

<ImageView android:scaleType="scaleXY" android:src="@drawable/my_image"/> 

https://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType

+0

ist scaleXY in scaleType vorhanden? https://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType – Pavan

+0

Nein, es ist nur ein Beispiel. Siehe Scaletypen: https://developer.android.com/reference/android/widget/ImageView.ScaleType.html –

+0

Ich habe verschiedene Kombinationen von Android versucht: scaleType, aber keiner von ihnen scheint zu funktionieren. Die Verwendung von ** fitXY ** bewirkt, dass sich die Ziffern außerhalb des Maßstabs befinden. –

0

Ok. Ich habe die Antwort gefunden.

Für das 2. Linearlayout, die android ändern: layout_width = von "match_parent" auf "wrap_content". Fügen Sie anschließend android: layout_gravity = "center" hinzu. Dies ermöglicht das LinearLayout auf seinen Inhalt zu verkleinern, wenn kleinere Höhe zwingt die Ziffern zu schrumpfen. Wenn es jedoch verkleinert wird, zentriert es sich auch in der enthaltenden Ansicht.

Danke für die Eingabe jeder.

Verwandte Themen