2017-05-26 1 views
1

Dans un LinearLayout, j'essaie d'afficher un nombre entier en utilisant des images pour les chiffres. Je veux que le nombre soit centré et que les images évoluent en fonction du nombre de chiffres présents.Utilisation de LinearLayout pour afficher un nombre variable d'images

Ma mise en page initiale avec 2 chiffres:

<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> 

Et voici à quoi il ressemble.

A) Avec 4 chiffres, tout a l'air bien, les chiffres s'adaptent horizontalement et sont aussi hauts que possible verticalement.

4 digits scaled to fit

B) Avec beaucoup plus de chiffres, il adapte toujours bien à l'espace disponible.

many more digits scale nicely

C) Mais lorsque le LinearLayout hauteur est réduite, les 4 chiffres séparés et les lacunes apparaissent entre eux.

images have separated

D) en retirant les layout_weight de chaque ImageView, les 4 chiffres revenir ensemble.

digits come back together

E) Mais lorsque le LinearLayout hauteur augmente, l'échelle des chiffres à la hauteur de la vue et certains disparaissent horizontalement hors de l'écran.

digits too large

Comment puis-je avoir ces images chiffres sont redimensionnés pour remplir l'espace disponible, montrer tous les chiffres et être centré sans lacunes, tout en conservant leurs proportions d'échelle, quels que soient les LinearLayout dimensions?

Merci.

+0

avez-vous essayé android: scaleType essayer ses propriétés selon votre exigence – Pavan

+0

donner la taille fixe de l'image! utiliser scaletype- – xbadal

+0

scaleType ne semble pas fonctionner. fitXY étire ou écrase les images afin que leurs proportions changent d'échelle. La fixation des tailles d'image nécessite des calculs de code qui varient en fonction du nombre de chiffres. –

Répondre

0

Avez-vous essayé d'ajouter un scaletype?

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

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

+0

est-ce que scaleXY existe dans scaleType? https://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType – Pavan

+0

Non, c'est juste un exemple. Voir scaletypes: https://developer.android.com/reference/android/widget/ImageView.ScaleType.html –

+0

J'ai essayé différentes combinaisons d'android: scaleType mais aucun d'entre eux ne semble fonctionner. L'utilisation de ** fitXY ** entraîne l'extension des chiffres hors de l'échelle. –

0

Ok. J'ai trouvé la réponse.

Pour la 2ème LinearLayout, changer le android: layout_width = de "match_parent" à "wrap_content". Ensuite, ajoutez android: layout_gravity = "center". Cela permet au LinearLayout de rétrécir à son contenu lorsque la plus petite hauteur force les chiffres à rétrécir. Quand il rétrécit, cependant, il se centre également dans la vue contenant.

Merci pour la contribution tout le monde.