JavascriptProva

venerdì 29 gennaio 2016

Esercizio sul RelativeLayout: alignTop, alignBottom, marginLeft, marginTop, marginBottom

In RelativeLayout la definizione della posizione di una view è espressa da "istruzioni" che definiscono la posizione sull'asse X e sull'asse Y.
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"


            android:layout_alignTop="@+id/textView1"

            android:layout_marginLeft="135dp"
            android:layout_toRightOf="@+id/textView1"

            android:src="@drawable/faciadecul" /> 
Codice:
In arancio le istruzioni che definiscono la posizione relativamente a qualcos'altro sull'asse Y;
in rosa le istruzioni che misurano la posizione sull'asse Y.

in verdino le istruzioni che definiscono la posizione relativamente a qualcos'altro sull'asse X;
in ciano le istruzioni che misurano la posizione sull'asse X.


Così, questa ImageView è alignTop a textView1 ossia allineate al margine superiore di textView1.
Sull'asse X, invece, è posizionata

Immagine:


Provo a fare spostamenti: azzero la misura del margine sinistro:
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/textView1"
            android:layout_marginLeft="0dp"
            android:layout_toRightOf="@+id/textView1"
            android:src="@drawable/faciadecul" /> 
Ed ecco l'immagine:



In questo caso, avendo la ScrollView una proprietà android:layout_width="wrap_content" non occupa a destra tutta la superficie dell'activity.
Adesso la imposto a android:layout_width="match_parent"

Infatti:



Comunque lo scopo di eliminare la distanza fra ImageView e TextView è stato raggiunto riducendo a zero marginLeft di ImageView.


Ora invece di alignTop pongo la ImageView sull'asse Y relativamente a TextView con un alignBottom:
        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/textView1"
            android:layout_marginLeft="0dp"
            android:layout_toRightOf="@+id/textView1"
            android:src="@drawable/faciadecul" /> 




Ecco, questa non me l'aspettavo: alignBottom significa che il bottom di una view si allinea con il bottom di un'altra, mentre io mi aspettavo che fosse il top dell'ImageView ad allinearsi con il bottom della TextView.

E se provassi a usare, insieme all'alignTop/alignBottom, una proprietà che misura la distanza?
Proviamo a usare alignTop insieme a un marginTop...

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignTop="@+id/textView1"
            android:layout_marginTop="200dp"
            android:layout_marginLeft="0dp"
            android:layout_toRightOf="@+id/textView1"
            android:src="@drawable/faciadecul" /> 




Sì, funziona!

Nessun commento:

Posta un commento