/ / Android: alignement après mise à l'échelle et taille modifiée - java, android, xml, android-layout, resize

Android: alignement après redimensionnement et modification de la taille - java, android, xml, android-layout, redimensionner

J'ai une vue qui définit sa largeur et sa hauteuren fonction des dimensions de la mise en page (via ViewTreeObserver). J'ai encore deux ImageViews (enveloppé dans les RelativeLayouts). J'ai besoin que ces deux images soient alignées en haut et en bas de la première vue. Ils le font, mais utilisent d'anciennes dimensions de vue, pas celles corrigées: il y a donc un écart entre les vues, lorsque le centre devient plus petit.

Voici une image de ce que je veux dire:

entrer la description de l'image ici

Et le code:

 @Override
public void onGlobalLayout() {
layoutWidth = layout.getWidth();  \ main layout
layoutHeight = layout.getHeight();
LayoutParams params = arrows.getLayoutParams();
params.width = layoutHeight/3;
params.height = layoutHeight/3;
arrows.setLayoutParams(params);
LayoutParams paramseyes = eyes.getLayoutParams();
paramseyes.width = layoutHeight/4;
eyes.setLayoutParams(paramseyes);
mouth.setLayoutParams(paramseyes);

/*
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams
(paramseyes);
lp.addRule(RelativeLayout.ABOVE, R.id.arrows);
eyes.setLayoutParams(lp);   ... nah, it didnt work
*/

removeOnGlobalLayoutListener(arrows, this);
}

le XML:

<ee.st.running.arrowwidgt
android1:id="@+id/arrows"
android1:layout_width="wrap_content"
android1:layout_height="wrap_content"
android1:layout_centerInParent="true"
android:dial="@drawable/hourglass1"
android:hand_hour="@drawable/hours"
android:hand_minute="@drawable/minuts"
android:scaleType="fitXY"
android1:src="@drawable/hourglass1" />

<RelativeLayout
android1:id="@+id/eyes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android1:layout_above="@id/arrows" >

<ImageView
android1:layout_width="wrap_content"
android1:layout_height="wrap_content"
android1:layout_centerInParent="true"
android1:src="@drawable/eyes" />

</RelativeLayout>

<RelativeLayout
android1:id="@+id/mouthset"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android1:layout_below="@id/arrows"
android:layout_centerHorizontal="true"
>
<ImageView

android1:layout_width="wrap_content"
android1:layout_height="wrap_content"
android1:layout_centerHorizontal="true"
android1:src="@drawable/mouth"
/>
</RelativeLayout>

Cette vue des flèches est grande (pour la prise en charge de plusieurs écrans, je la redimensionne à une certaine taille plus tard).

Réponses:

0 pour la réponse № 1

J'ai finalement compris pourquoi. Lorsque j'ai changé la largeur de la mise en page, cela a redimensionné l'image en conséquence. Mais cela n'a pas changé la hauteur de la mise en page.

Je devrais faire paramseyes.height = ...

(Dans ma situation, c'est layoutHeight / 8;)

Ainsi, le problème est résolu.