Autore Topic: Ridimensionamento dinamico mappa  (Letto 587 volte)

Offline mistral61

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire z
  • Sistema operativo:
    Windows 7
Ridimensionamento dinamico mappa
« il: 09 Luglio 2013, 23:38:02 CEST »
0
Sto lavorando a progetto GoogleMaps V2, il mio problema è ottenere un layout con una mappa che si ridimensiona in altezza automaticamente occupando tutto lo spazio rimasto disponibile .
Nel caso specifico ho 4 righe di pulsanti e label , una riga di checkbox e poi la mappa, in fondo i classici ok cancel:
Codice (XML): [Seleziona]
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/root"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:stretchColumns="*"
   android:weightSum="8" >

    <TableRow
       android:id="@+id/first_row"
       android:layout_margin="0dip" >

        <Button
           android:id="@+id/cmd1"
           android:layout_width="0dip"
           android:layout_weight="1"
           android:padding="10dip"
           android:text="@string/set1" />

        <Button
           android:id="@+id/cmd2"
           android:layout_width="0dip"
           android:layout_weight="1"
           android:padding="10dip"
           android:text="@string/set2" />
    </TableRow>

    <TableRow
       android:id="@+id/second_row"
       android:layout_margin="0dip" >

        <TextView
           android:id="@+id/txt1"
           android:layout_width="0dip"
           android:layout_marginRight="5dip"
           android:layout_weight="1"
           android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
           android:id="@+id/txt2"
           android:layout_width="0dip"
           android:layout_marginLeft="5dip"
           android:layout_weight="1"
           android:textAppearance="?android:attr/textAppearanceLarge" />
    </TableRow>

    <TableRow
       android:id="@+id/third_row"
       android:layout_margin="0dip" >

        <Button
           android:id="@+id/cmd3"
           android:layout_width="0dip"
           android:layout_weight="1"
           android:padding="10dip"
           android:text="@string/set3" />

        <Button
           android:id="@+id/cmd4"
           android:layout_width="0dip"
           android:layout_weight="1"
           android:padding="10dip"
            />
    </TableRow>

    <TableRow
       android:id="@+id/fourth_row"
       android:layout_margin="0dip" >

        <TextView
           android:id="@+id/txt5"
           android:layout_width="0dip"
           android:layout_marginRight="5dip"
           android:layout_weight="1"
           android:textAppearance="?android:attr/textAppearanceLarge" />

        <TextView
           android:id="@+id/txt6"
           android:layout_width="0dip"
           android:layout_marginLeft="5dip"
           android:layout_weight="1"
           android:textAppearance="?android:attr/textAppearanceLarge" />
    </TableRow>

    <TableRow
       android:id="@+id/fifth_row"
       android:layout_margin="0dip" >

        <CheckBox
           android:id="@+id/chkDom"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDayDom" />

        <CheckBox
           android:id="@+id/chkLun"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDayLun" />

        <CheckBox
           android:id="@+id/chkMar"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDayMar" />

        <CheckBox
           android:id="@+id/chkMer"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDayMer" />
    </TableRow>

    <TableRow
       android:id="@+id/sixth_row"
       android:layout_margin="0dip" >

        <CheckBox
           android:id="@+id/chkGio"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDayGio" />

        <CheckBox
           android:id="@+id/chkVen"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDayVen" />

        <CheckBox
           android:id="@+id/chkSab"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:checked="true"
           android:text="@string/wekDaySab" />
    </TableRow>
   

    <TableRow
       android:id="@+id/map_row"
       android:layout_margin="0dip"
       android:layout_weight="1"
       android:gravity="top"
       android:paddingTop="0dp" >

        <fragment
           android:id="@+id/map_in_row"
           android:layout_width="fill_parent"
           android:layout_height="850dp"
           android:layout_gravity="top"
           android:layout_margin="0dip"
           android:layout_span="4"
           android:layout_weight="1"
           class="com.google.android.gms.maps.SupportMapFragment"
           android:padding="0dip" />

    </TableRow>

    <TableRow
       android:id="@+id/but_row"
       android:layout_margin="0dip"
       android:gravity="right" >

        <Button
           android:id="@+id/cmdUndo"
           android:layout_width="0dip"
           android:padding="10dip"
           android:text="@android:string/cancel" />

        <Button
           android:id="@+id/cmdSave"
           android:layout_width="0dip"
           android:padding="10dip"
           android:text="@android:string/ok" />
    </TableRow>

</TableLayout>
Come potete leggere ho impostato fissa l' altezza, con un valore che va bene su un tablet 10" , ma vorrei che su tablet da 7, cell da 5 ,i pulsanti ok cancel stiano in fondo e la mappa occupi lo spazio rimasto disponibile in altezza.
Con il TableLayout sono riuscito a ottenere un risultato che va bene sui vari device e non ci riuscivo con altri layout, ma non capisco come ottenere questo ridimensionamento automatico in altezza della map, come impostare l' xml.

Avevo pensato a farlo da codice nel .java , ma forse c'e' una soluzione più semplice ...
Ho provato con il weightsum ma sembra che la map ignori di espandersi, non so se è un effettivo limite o sono io che sbaglio qualcosa,
Ho cercato su Google ma non ho ricavato info utili e allora eccomi qua.

Offline Nicola_D

  • 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:Ridimensionamento dinamico mappa
« Risposta #1 il: 10 Luglio 2013, 08:55:04 CEST »
+1
usa un relative layout.
Ogni riga la definisci come linear layout (per le prime tre), mettendole in cima e poi una sotto l'altra, poi definisci un linear layout per la barra in basso e lo ancori al fondo, poi metti la mappa come "below" dell'ultimo  linearlayout in cima e "above" il layout ancorato al fondo, gli dai heght=match_parent e sei a posto
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 mistral61

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire z
  • Sistema operativo:
    Windows 7
Re:Ridimensionamento dinamico mappa
« Risposta #2 il: 10 Luglio 2013, 17:19:04 CEST »
0
Riesci a farmi un esempio minimale (2 button in testa 2 in fondo e di mezzo la map che si prende tutto lo spazio in verticale disponibile?)
Ho provato quanto dici ma viene un pasticcio, forse c'e' qualche match_parent/wrap_content che non capisco ancora come va messo.
Grazie della risposta.

Offline mistral61

  • Nuovo arrivato
  • *
  • Post: 7
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Desire z
  • Sistema operativo:
    Windows 7
Re:Ridimensionamento dinamico mappa
« Risposta #3 il: 14 Luglio 2013, 09:00:48 CEST »
+1
Mi ci sono sbattuto un pò e ho risolto come scrive Nicola_D. grazie.