Autore Topic: [Relative Layout] Problema ad allineare una TextView ed un RadioGroup  (Letto 1787 volte)

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
0
Ciao,
stò sperimentando un RelativeLayout per la mia applicazione e stò incontrando qualche difficoltà nell'allineare su di una stessa riga due oggetti.

La situazione è la seguente: ho una TextView che riporta la seguente scritta: "Sesso" ed accanto ad essa sulla destra vi è un RadioGroup contenente 2 RadioButton con le diciture "Maschio" e "Femmina"

Attualmente il mio layout è il seguente:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
   
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="10dp">
       
        <TextView
                android:id="@+id/sexView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" 
                android:layout_alignParentLeft="true"
                android:text="Sesso">
        </TextView>
       
        <RadioGroup
                android:id="@+id/sexGroup"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_toRightOf="@+id/sexView"
                android:layout_alignBaseline="@+id/sexView">
           
            <RadioButton
                                        android:id="@+id/radio0"
                                        android:layout_width="wrap_content" 
                                        android:layout_height="wrap_content"
                                        android:textSize="12sp"
                                        android:text="Maschio" 
                                        android:checked="true">
                                </RadioButton>
                                <RadioButton
                                        android:id="@+id/radio1"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:textSize="12sp"
                                        android:text="Femmina">
                                </RadioButton>
                               
        </RadioGroup>
       
       
    </RelativeLayout>

Tramite le seguenti 2 linee di codice credo che stia correttamente dicendo al RadioGroup che deve stare [a destra] della TextView:
Codice: [Seleziona]
android:layout_alignParentRight="true"
                android:layout_toRightOf="@+id/sexView"

e fin quì pare tutto ok...il problema è che però i 2 RadioButton appaiono si a destra della TextView ma anche spostati più in basso...vorrei fare in modo che il testo nella TextView fosse in qualche modo centrato verticalmente con i RadioButton in modi da non essere orribilmente antiestetico...

Ho provato a mettere la seguente linea di codice al RadioGroup ma niente...non cambia nulla:
Codice: [Seleziona]
android:layout_alignBaseline="@+id/sexView"

Non credo sia qualcosa di complicatissimo...probabilmente mi sfugge qualcosa...

Mi sapreste aiutare?

Tnx
Andrea

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #1 il: 05 Settembre 2011, 11:25:03 CEST »
0
per allinearli al centro dovresti fargli mettere come proprietà della textview il gravity center.
però l'altezza della tv deve essere uguale a quelli dei radio.
per fare ciò crea prima i radio, allienati a destra e con la dicitura:
android:layout_toRightOf="@+id/sexView"

poi fai la tv dicendogli: toLeftOf (radio group), align baseline e align top (radio group). facendo cosi la tv è alta come i radio.
mettendogli poi il gravity a center_horizontal ottieni la tv centrata
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #2 il: 05 Settembre 2011, 12:39:09 CEST »
0
per allinearli al centro dovresti fargli mettere come proprietà della textview il gravity center.
però l'altezza della tv deve essere uguale a quelli dei radio.
per fare ciò crea prima i radio, allienati a destra e con la dicitura:
android:layout_toRightOf="@+id/sexView"

poi fai la tv dicendogli: toLeftOf (radio group), align baseline e align top (radio group). facendo cosi la tv è alta come i radio.
mettendogli poi il gravity a center_horizontal ottieni la tv centrata

mmm...ho provato a fare come mi hai detto (almeno così credo di aver fatto...forse non ho capito bene ciò che intendevi dirmi) ma ho problemi :-(

Questo è il mio nuovo codice:

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
   
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="10dp">
       
        <RadioGroup
                android:id="@+id/sexGroup"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@+id/sexView">
           
                    <RadioButton
                                        android:id="@+id/radio0"
                                        android:layout_width="wrap_content" 
                                        android:layout_height="wrap_content"
                                        android:textSize="12sp"
                                        android:text="Maschio" 
                                        android:checked="true">
                                </RadioButton>
                               
                                <RadioButton
                                        android:id="@+id/radio1"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:textSize="12sp"
                                        android:text="Femmina">
                                </RadioButton>
                               
        </RadioGroup>
       
        <TextView
                android:id="@+id/sexView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/sexGroup"
                android:layout_alignBaseline="@+id/sexGroup"
                android:layout_alignTop="@+id/sexGroup"
                android:gravity="center_horizontal"
                android:text="Sesso Vittima">
        </TextView>
               
    </RelativeLayout>

In pratica come mi hai detto ho creato prima il RadioGroup con id sexGroup (che non è nulla di hard) con i 2 RadioButton dentro (che ha una certa altezza) e l'ho allineata a destra della TextView con id sexView...poi dopo ho creato la TextView con id sexView ed ho fatto come mi hai detto: allineata a sinistra del RadioGroup con id sexGroup e impostato l'align top e l'align down di tale TextVie con il RadioGroup per avere la stessa altezza ed infine settato la gravity a center_horizzontal...

Il problema è che pare che ci sia un errore nel layout perchè nella visualizzazione grafica dell'editor mi compare il seguente errore: Circular dependencies cannot exist in RelativeLayout

In pratica credo che dipenda dal fatto che il RadioGroup con id sexGroup dice di allinearsi a destra della TextView con id sexView e contemporaneamente tale TextView dice di essere allineata a sinistra del RadioGroup aventi id sexGroup...credo che intenda questo con il termine dipendanza circolare...

Che fare?

Tnx
Andrea

Offline Summ3r

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X 10.6
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #3 il: 05 Settembre 2011, 12:50:57 CEST »
0
secondo me dovresti provare a togliere il +
se non sbaglio il + si mette nella dichiarazione dell'elemento per aggiungere l'elemento all'interno delle risorse
quando fai gli allineamenti dovresti scrivere in questo modo : layout_toRightOf="@id/sexView"

prova così
Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
   
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/relativeLayout1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="10dp">
       
        <TextView
                android:id="@+id/sexView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:text="Sesso">
        </TextView>
       
        <RadioGroup
                android:id="@+id/sexGroup"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_toRightOf="@id/sexView">
           
            <RadioButton
                                        android:id="@+id/radio0"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:textSize="12sp"
                                        android:text="Maschio"
                                        android:checked="true">
                                </RadioButton>
                                <RadioButton
                                        android:id="@+id/radio1"
                                        android:layout_width="wrap_content"
                                        android:layout_height="wrap_content"
                                        android:textSize="12sp"
                                        android:text="Femmina">
                                </RadioButton>
                               
        </RadioGroup>
       
       
    </RelativeLayout>

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #4 il: 05 Settembre 2011, 13:00:08 CEST »
0
mmm no continua a non andare...il codice che mi hai passato tra l'altro fà riferimento alla prima versione del layout cioè quella dove veniva dichiarata prima la TextView e poi il RadioGrouop...

Per quanto mi dici circa il + booo...sul libro di Carli ad esempio fà cose del genere:

android:layout_aligneBaseline="+id/username"

Onestamente anche a me sembra strana come cosa perchè anche io avevo letto che il + serviva per aggiungere l'elemento all'interno delle risorse...però booo...sul libro fà così...

Questa cosa del layout mi stà facendo uscire pazzo...

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #5 il: 05 Settembre 2011, 14:18:43 CEST »
+1
nella fretta ti ho detto delle cose inesatte
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/relativeLayout1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dp">
        <RadioGroup
                android:id="@+id/sexGroup"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true">
                <RadioButton
                        android:id="@+id/radio0"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:text="Maschio"
                        android:checked="true">
                </RadioButton>
                <RadioButton
                        android:id="@+id/radio1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:textSize="12sp"
                        android:text="Femmina">
                </RadioButton>
        </RadioGroup>
        <TextView
                android:id="@+id/sexView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignBottom="@id/sexGroup"
                android:layout_alignTop="@id/sexGroup"
                android:gravity="center_vertical"
                android:text="Sesso Vittima">
        </TextView>
</RelativeLayout>
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Luigi.Arena

  • Utente senior
  • ****
  • Post: 616
  • DACIA DUSTER 4X4 SUPER
  • Respect: +56
    • Mostra profilo
    • ArenaWebTest
  • Dispositivo Android:
    epad m009
  • Play Store ID:
    Luigi Arena
  • Sistema operativo:
    Windows 7
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #6 il: 05 Settembre 2011, 16:07:04 CEST »
0
Bella mossa !!! :D
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato .

Offline AndreaNobili

  • Utente junior
  • **
  • Post: 75
  • Respect: 0
    • Mostra profilo
Re:[Relative Layout] Problema ad allineare una TextView ed un RadioGroup
« Risposta #7 il: 05 Settembre 2011, 19:38:37 CEST »
0
Tnx,
grazie...risolto...ora vedo di capirlo bene...