Autore Topic: visualizzare layout più grande della dimensione dello schermo  (Letto 1231 volte)

Offline pablo86

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD: HVGA
  • Sistema operativo:
    Windows XP
visualizzare layout più grande della dimensione dello schermo
« il: 05 Maggio 2011, 13:05:51 CEST »
0
Salve,

premetto che sono alle prime armi con android.
Il mio problema penso sia banale.
Vorrei visualizzare sullo schermo di un AVD HVGA il seguente layout:
Spinner-- menù a tendina
ListView-- menù a scelta multipla
Buttons-- serie di bottoni

Il codice XML associato a questo tipo di layout è:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:stretchColumns="0">

    <TableRow>
    <!-- riga 0 colonna 0-->
        <TextView
                android:text="Selezionare il raggio di distanza dei POI:"
                android:id="@+id/r0c0"
           android:layout_column="0"
           android:padding="3dip" />
   
    </TableRow>
   
    <TableRow>
    <!-- riga 1 colonna 0-->
        <TextView
                android:text="raggio"
                android:id="@+id/raggio"
           android:layout_column="0"
           android:padding="3dip" />
   
    </TableRow>
   
    <TableRow>
    <!-- riga 2 colonna 0-->
        <Spinner
                android:text="spinner"
                android:layout_column="0"
                android:id="@+id/spinner1"
                        android:padding="3dip"
                />
   
    </TableRow>
   
    <View
       android:layout_height="2dip"
       android:background="#FF909090" />

       
    <TableRow>
    <!-- riga 3 colonna 0 -->
        <TextView
                android:layout_column="0"
           android:text="Selezionare le categorie di interesse:"
           android:padding="3dip" />
       
    </TableRow>
   
    <TableRow>
    <!-- riga 4 colonna 0 -->
        <TextView
                android:text="categorie"
                android:id="@+id/categorie"
                android:layout_column="0"
           android:padding="3dip" />
       
    </TableRow>

    <ListView
                android:layout_column="0"
                        android:id="@android:id/list"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:drawSelectorOnTop="false"
                        android:choiceMode="multipleChoice"
                        android:padding="3dip"
        />
   
   
    <View
       android:layout_height="2dip"
       android:background="#FF909090" />
   
     <Button android:text="Cerca"
                android:id="@+id/bottoneCerca"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                >
         </Button>
       
 
   
    <Button android:text="Aggiungi POI"
                android:id="@+id/bottoneAggiungiPOI"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
   
    <Button android:text="Scarica POI"
                android:id="@+id/bottoneScaricaPOI"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
         
         <Button android:text="Elimina POI personali"
                android:id="@+id/bottoneEliminaPOIPers"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
         
         <Button android:text="Elimina POI scaricati"
                android:id="@+id/bottoneEliminaPOIScar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>

</TableLayout>

Uso un TableLayout perche con il LinearLayout avevo praticamente lo stesso problema.
Vi mostro anche il codice XML del LynearLayout:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent">
   
    <TextView  
                android:text="Selezionare il raggio di distanza dei POI:"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
   />
   
        <TextView  
                android:id="@+id/raggio"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
       
   />
   
    <Spinner
        android:id="@+id/spinner1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="true"
               
        />
       
        <TextView  
                android:id="@+id/categorie"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Selezionare le categorie di interesse:"
   />
       
        <!-- Inseriamo una lista -->   
        <ListView
                android:id="@android:id/list"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:drawSelectorOnTop="false"
                android:choiceMode="multipleChoice"
                />
               
        <Button android:text="Cerca"
                android:id="@+id/bottoneCerca"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
         
          <Button android:text="Aggiungi POI"
                android:id="@+id/bottoneAggiungiPOI"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
   
    <Button android:text="Scarica POI"
                android:id="@+id/bottoneScaricaPOI"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
         
         <Button android:text="Elimina POI personali"
                android:id="@+id/bottoneEliminaPOIPers"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
         
         <Button android:text="Elimina POI scaricati"
                android:id="@+id/bottoneEliminaPOIScar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
         </Button>
       

</LinearLayout>

In particolare il mio problema è che sullo schermo mi appare tutto fino alla ListView e poi nulla.Per come è fatto il file di layout mi aspetterei dopo la listview la serie di bottoni, magari scorrendo una scrollBar per visualizzarli visto che il tutto non entra sullo schermo.
Invece niente, dopo la listview non appare nulla, come se i bottoni non ci sono.

Sapreste dirmi dove sbaglio? o magari una soluzione alternativa migliore per impostare un layout del genere?

Il codice java dell'activity che richiama il layout di sopra è il seguente:
Codice (Java): [Seleziona]
package gestInfo.firstApp;

import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;

public class SelectionActivity extends ListActivity implements AdapterView.OnItemSelectedListener,OnClickListener{
       
        TextView categorie_selezionate;
        TextView raggio_selezionato;
        String[] items_raggio={"100 m","200 m","500 m","1 km","2 km"};
        String[] items_categorie={"museo","cinema","ristorante","bar","shopping"};
        Button Cerca;
        Button ScaricaPoi;
        Button AggiungiPoi;
        Button EliminaPoiPers;
        Button EliminaPoiScar;
        ListView lista;
       
        /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.table);
       
        Cerca = (Button) findViewById(R.id.bottoneCerca);
        /* imposto un listener su questo oggetto: resto in ascolto di eventi che possono verificarsi
         * su questo widget */

        Cerca.setOnClickListener(this);
       
        AggiungiPoi = (Button) findViewById(R.id.bottoneAggiungiPOI);
        /* imposto un listener su questo oggetto: resto in ascolto di eventi che possono verificarsi
         * su questo widget */

        AggiungiPoi.setOnClickListener(this);
               
        ScaricaPoi = (Button) findViewById(R.id.bottoneScaricaPOI);
        /* imposto un listener su questo oggetto: resto in ascolto di eventi che possono verificarsi
         * su questo widget */

        ScaricaPoi.setOnClickListener(this);
       
        EliminaPoiPers = (Button) findViewById(R.id.bottoneEliminaPOIPers);
        /* imposto un listener su questo oggetto: resto in ascolto di eventi che possono verificarsi
         * su questo widget */

        EliminaPoiPers.setOnClickListener(this);
       
        EliminaPoiScar = (Button) findViewById(R.id.bottoneEliminaPOIScar);
        /* imposto un listener su questo oggetto: resto in ascolto di eventi che possono verificarsi
         * su questo widget */

        EliminaPoiScar.setOnClickListener(this);
       
        raggio_selezionato=(TextView)findViewById(R.id.raggio);
        categorie_selezionate=(TextView)findViewById(R.id.categorie);
       
        // definiamo l'oggetto spinner per raggio
                Spinner spin_raggio=(Spinner)findViewById(R.id.spinner1);
            // definiamo la stessa activity come listener
                spin_raggio.setOnItemSelectedListener(this);
               
                // definiamo un adapter
                ArrayAdapter<String> adapter_r =
                                new ArrayAdapter<String>(this,
                                        android.R.layout.simple_spinner_item,
                                        items_raggio);
               
                /* definiamo l'aspetto con cui deve apparire
                 * l'adapter all'interno dello spinner raggio */

                adapter_r.setDropDownViewResource(
                        android.R.layout.simple_spinner_dropdown_item);
                // associamo l'adapter allo spinner
                spin_raggio.setAdapter(adapter_r);
       
       
                /** LISTA SCELTA MULTIPLA **/
                /* settiamo l'adapter ad una visualizzazione
                 *  multiple-choice tramite checkboxes */

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                                android.R.layout.simple_list_item_multiple_choice,
                                items_categorie);
                setListAdapter(adapter);
                lista = getListView();
                // CHOICE_MODE_MULTIPLE = 2
                lista.setChoiceMode(2);
               
    }

 // gestiamo la selezione di uno degli elementi dello spinner
    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
       
                        raggio_selezionato.setText(items_raggio[position]);
                }

    public void onNothingSelected(AdapterView<?> parent) {
       
                raggio_selezionato.setText("");
    }
   
    /** Gestisce la scelta di un elemento della lista **/
        /** riceve come argomento la posizione dell'elemento scelto rispetto all'array da cui siamo partiti **/
        public void onListItemClick(ListView parent, View v, int position, long id) {
               
                        categorie_selezionate.setText(items_categorie[position]);
        }

        public void onClick(View v) {
                if(v == Cerca){
                       
                }
                else if(v == AggiungiPoi){
                       
                }
                else if(v == ScaricaPoi){
                       
                }
                else if(v == EliminaPoiPers){
                       
                }
                else if(v == EliminaPoiScar){
                       
                }
        }

}

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:visualizzare layout più grande della dimensione dello schermo
« Risposta #1 il: 05 Maggio 2011, 13:38:26 CEST »
0
Il layout con i LinearLayout sembra corretto, puoi postare uno screenshot per vedere con precisione come ti appare?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pablo86

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD: HVGA
  • Sistema operativo:
    Windows XP
Re:visualizzare layout più grande della dimensione dello schermo
« Risposta #2 il: 05 Maggio 2011, 15:53:28 CEST »
0
Grazie per l'attenzione

In allegato immagine di come lo schermo appare (con la scrollbar in giu):

come puoi vedere i pulsanti non ci sono...

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:visualizzare layout più grande della dimensione dello schermo
« Risposta #3 il: 05 Maggio 2011, 15:57:30 CEST »
0
consiglio:
metti l'height della listview a 0dp e metti il layout_weight="1"
poi i button li metti in linear layout orizzontale che dichiari subito dopo la listview.
In questo modo i button vanno in fondo e la listview occupa quello che può
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 pablo86

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    AVD: HVGA
  • Sistema operativo:
    Windows XP
Re:visualizzare layout più grande della dimensione dello schermo
« Risposta #4 il: 05 Maggio 2011, 16:54:59 CEST »
0
Grazie ho risolto usando l'attributo layout_height.

Solo che adesso quando eseguo l'applicazione il dispositivo mi funziona però mi si apre la console DDMS con le seguenti scritte in rosso:

Codice: [Seleziona]
[2011-05-05 16:48:27 - ddms]null
java.lang.NullPointerException
        at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
        at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
        at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
        at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
        at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
        at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)

[2011-05-05 16:48:27 - ddms]null
java.lang.NullPointerException
        at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
        at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
        at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
        at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
        at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
        at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)

[2011-05-05 16:50:13 - ddms]null
java.lang.NullPointerException
        at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
        at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
        at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
        at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
        at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
        at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)

[2011-05-05 16:50:13 - ddms]null
java.lang.NullPointerException
        at com.android.ddmlib.Client.sendAndConsume(Client.java:572)
        at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142)
        at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65)
        at com.android.ddmlib.Client.getJdwpPacket(Client.java:671)
        at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317)
        at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263)



ho notato che mi apre questa console quando modifico il file XML di layout...come se il problema dipendesse dal layout. é un errore?