Autore Topic: ScrollView  (Letto 3304 volte)

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
ScrollView
« il: 04 Marzo 2013, 12:57:57 CET »
0
Salve mi sono messo nei casini, ho incominciato a fare una app utilizzando AbsoluteLayer e Relative Layer... ora mi sono accorto che ho bisogno della ScrollView perchè gli elementi sono tanti... sapete dirmi come fare??
questo è il mio xml :

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<AbsoluteLayout
        android:id="@+id/widget0"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
       
        android:background="@drawable/sfondo">
<RelativeLayout
        android:id="@+id/widget38"
        android:layout_width="224dp"
        android:layout_height="50dp"
        android:layout_x="50dp"
        android:layout_y="31dp">
<Button
        android:id="@+id/bottonecamporeale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<RelativeLayout
        android:id="@+id/widget40"
        android:layout_width="225dp"
        android:layout_height="50dp"
        android:layout_x="50dp"
        android:layout_y="92dp">
<Button
        android:id="@+id/bottoneccd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<RelativeLayout
        android:id="@+id/widget41"
        android:layout_width="225dp"
        android:layout_height="50dp"
        android:layout_x="50dp"
        android:layout_y="153dp">
<Button
        android:id="@+id/bottonearc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<RelativeLayout
        android:id="@+id/widget42"
        android:layout_width="225dp"
        android:layout_height="70dp"
        android:layout_x="50dp"
        android:layout_y="214dp">
<Button
        android:id="@+id/dimensioneogg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<RelativeLayout
        android:id="@+id/widget43"
        android:layout_width="225dp"
        android:layout_height="70dp"
        android:layout_x="50dp"
        android:layout_y="290dp">
<Button
        android:id="@+id/campionamento"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
<RelativeLayout
        android:id="@+id/widget44"
        android:layout_width="225dp"
        android:layout_height="70dp"
        android:layout_x="50dp"
        android:layout_y="651dp">
<Button
        android:id="@+id/riduttori"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>
</AbsoluteLayout>

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:ScrollView
« Risposta #1 il: 04 Marzo 2013, 13:43:39 CET »
0
Detto molto sinceramente: devi rimuovere AbsoluteLayout (anche perchè nella documentazione ufficiale risulta deprecato) e ripensare il layout.

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
Re:ScrollView
« Risposta #2 il: 04 Marzo 2013, 14:02:07 CET »
0
e praticamente come potrei risolvere?... non c'è un modo per inserici lo scroll view?

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ScrollView
« Risposta #3 il: 04 Marzo 2013, 16:36:23 CET »
0
e praticamente come potrei risolvere?... non c'è un modo per inserici lo scroll view?

Ripensa a tutto il tuo layout senza l'absolutelayout. E poi metti il risultato (senza absolutelayout quindi) dentro ad una scrollview.....
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
Re:ScrollView
« Risposta #4 il: 04 Marzo 2013, 16:38:43 CET »
0
il problema è che i tasti ora mi sono tutti accavallati ...

Offline rs94

  • Utente normale
  • ***
  • Post: 227
  • Respect: +21
    • Mostra profilo
  • Dispositivo Android:
    Sony Ericsson Xperia Arc S
  • Sistema operativo:
    Windows 8
Re:ScrollView
« Risposta #5 il: 04 Marzo 2013, 17:19:09 CET »
0
il problema è che i tasti ora mi sono tutti accavallati ...

Non ho detto di togliere solo l'absolutelayout... Ti ho suggerito di ripensare al tuo layou.. significa, ad esempio, basarlo su un linearlayout. E ovvio che se togli soltanto l'absolutelayout ti va in palla tutto il layout :)
L'unica certezza è il dubbio.
Dubitare di se stessi è il primo segno di intelligenza.

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ScrollView
« Risposta #6 il: 04 Marzo 2013, 17:34:23 CET »
0
Ti conviene eliminarlo completamente l'AbsoluteLayout altrimenti avrai problemi in seguito...
pensa quando la tua applicazione sarà lanciata di dispositivi che hanno dimensioni del display diverse..

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
Re:ScrollView
« Risposta #7 il: 04 Marzo 2013, 17:44:22 CET »
0
Ho provato a trasformarlo cosi ... ma mi da errore e l'applicazione di chiude
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

<ScrollView
        android:id="@+id/widget0"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
       
        android:background="@drawable/sfondo">
<LinearLayout
        android:id="@+id/widget38"
        android:layout_width="224dp"
        android:layout_height="50dp"
        >
<Button
        android:id="@+id/bottonecamporeale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        />
</LinearLayout>
<LinearLayout
        android:id="@+id/widget40"
        android:layout_width="225dp"
        android:layout_height="50dp"
        >
<Button
        android:id="@+id/bottoneccd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</LinearLayout>
<LinearLayout
        android:id="@+id/widget41"
        android:layout_width="225dp"
        android:layout_height="50dp"
        >
<Button
        android:id="@+id/bottonearc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
        />
</LinearLayout>
<LinearLayout
        android:id="@+id/widget42"
        android:layout_width="225dp"
        android:layout_height="70dp"
>
<Button
        android:id="@+id/dimensioneogg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />
</LinearLayout>
<LinearLayout
        android:id="@+id/widget43"
        android:layout_width="225dp"
        android:layout_height="70dp"
        >
<Button
        android:id="@+id/campionamento"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />
</LinearLayout>
<LinearLayout
        android:id="@+id/widget44"
        android:layout_width="225dp"
        android:layout_height="70dp"
        >
<Button
        android:id="@+id/riduttori"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />
</LinearLayout>
</ScrollView>

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ScrollView
« Risposta #8 il: 04 Marzo 2013, 18:03:35 CET »
0
la scroolView può avere solo un child, quindi una volta aperta la scrollView dichiara al suo interno un linearlayout o quello che ti serve e all'interno ci metti tutta la roba..

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
Re:ScrollView
« Risposta #9 il: 04 Marzo 2013, 18:08:21 CET »
0
questo è il nuovo codice.. ora appare la scrollView ma appare solo un bottone..
Codice (XML): [Seleziona]
<ScrollView
        android:id="@+id/widget0"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
       
        android:background="@drawable/sfondo">
<LinearLayout
        android:id="@+id/widget38"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
>
<Button
        android:id="@+id/bottonecamporeale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />

<Button
        android:id="@+id/bottoneccd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />

<Button
        android:id="@+id/bottonearc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />
<Button
        android:id="@+id/dimensioneogg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />

<Button
        android:id="@+id/campionamento"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
       
         />

<Button
        android:id="@+id/riduttori"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
</LinearLayout></ScrollView>
« Ultima modifica: 04 Marzo 2013, 18:13:02 CET da manu2424 »

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ScrollView
« Risposta #10 il: 04 Marzo 2013, 18:20:35 CET »
0
Non posso aiutarti in questo modo, devi chiarire qual'è la tua domanda e postare anche il codice xml di una singola cella della lista...

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
Re:ScrollView
« Risposta #11 il: 04 Marzo 2013, 18:22:40 CET »
0
allora io ho tot pulsanti.(come avrai notato nel file xml.. ) ma quando avvio l'applicazione me ne mostra solo uno. (il primo della lista xml).. Come mai questo? come posso ovviare ??per info ti posto pure il mio file java :

p.s = il file xml di prima gestisce in teoria la grafica di questa activity...
Codice (Java): [Seleziona]
package com.example.calcoliastronomici;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.Button;

import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;



public class MainActivity extends Activity {
//Bottone campo apparente e reale
        public Button bottonecamporeale;
    Intent intent;
public Button bottoneccd;
Intent intent1;
public Button bottonearc;
Intent intent2;
public Button dimensioneogg;
Intent intent3;
public Button campionamento;
Intent intent4;
public Button riduttori;
Intent intent5;

public TextView spazio;
         
        //DICHIARAZIONI
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layoutprimapagina);

        setVerticalScrollBarEnabled(true);

      //BOTTONI
        bottonecamporeale = new Button(this);
        Button bottonecamporeale = (Button)findViewById(R.id.bottonecamporeale);
        bottonecamporeale.setText("Campo  inquadrato reale degli oculari");
       


        intent=new Intent(getApplicationContext(), CalcoliAstronomici.class);

       
        //GESTIONE BOTTONE CAMPO REALE
       
        bottonecamporeale.setOnClickListener(new OnClickListener() {  


                 public void onClick(View v) {
                         startActivity(intent);        

                 } });
       
         
        bottoneccd = new Button(this);
        Button bottoneccd = (Button)findViewById(R.id.bottoneccd);

        bottoneccd.setText("Calcola il campo inqaudrato dal CCD");
        intent1=new Intent(getApplicationContext(), CCD.class);
       
        bottoneccd.setOnClickListener(new OnClickListener() {  


         public void onClick(View v) {
                 startActivity(intent1);        

         } });
        bottonearc = new Button(this);
        Button bottonearc = (Button)findViewById(R.id.bottonearc);

        bottonearc.setText("arc-sec/pixel partendo dalla dimensione nota di un oggetto");
        intent2=new Intent(getApplicationContext(), Arc.class);
       
        bottonearc.setOnClickListener(new OnClickListener() {  


         public void onClick(View v) {
                 startActivity(intent2);        

         } });
        dimensioneogg = new Button(this);
        Button dimensioneogg = (Button)findViewById(R.id.dimensioneogg);

        dimensioneogg.setText("Lunghezza focale partendo dalla dimensione nota di un oggetto");
        intent3=new Intent(getApplicationContext(), Dimensioneogg.class);
       
        dimensioneogg.setOnClickListener(new OnClickListener() {  


         public void onClick(View v) {
                 startActivity(intent3);        

         } });
       campionamento = new Button(this);
        Button campionamento = (Button)findViewById(R.id.campionamento);

        campionamento.setText("Campionamento ideale nella ripresa CCD di pianeti");
        intent4=new Intent(getApplicationContext(), Campionamento.class);
       
        campionamento.setOnClickListener(new OnClickListener() {  


         public void onClick(View v) {
                 startActivity(intent4);        

         } });
       
        riduttori = new Button(this);
        Button riduttori = (Button)findViewById(R.id.riduttori);

        riduttori.setText("Proiezione oculari");
        intent5=new Intent(getApplicationContext(), Riduttori.class);
       
        riduttori.setOnClickListener(new OnClickListener() {  


         public void onClick(View v) {
                 startActivity(intent5);        

         } });
    }
    private void setVerticalScrollBarEnabled(boolean b) {
                // TODO Auto-generated method stub
               
        }
        @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
   
}
« Ultima modifica: 04 Marzo 2013, 18:24:25 CET da manu2424 »

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ScrollView
« Risposta #12 il: 04 Marzo 2013, 18:42:44 CET »
0
setVerticalScrollBarEnabled(true); puoi eliminarlo dato che di default la scrollView ha lo scroller integrato. Poi ti conviene sempre specificare l'orientamento del linearLayout. Inoltre dai un minimo di disposizione dei bottoni all'interno del layout, setta almeno il parametro weight.


Post unito: 04 Marzo 2013, 18:44:09 CET
Mi son dimenticato di rispondere alla domanda + importante...i bottoni non li vedi perchè tu ne stai creando di nuovi nel codice. Dovresti invece andare a ripescarli con Button ben =(Button)findViewById(R.id.NomeTuoBottone);

Offline manu2424

  • Nuovo arrivato
  • *
  • Post: 38
  • Respect: 0
    • Mostra profilo
Re:ScrollView
« Risposta #13 il: 04 Marzo 2013, 19:53:41 CET »
0
tutto perfetto.. una curiosità .. nell'emultatore con ics i bottoni sono semitrasparenti (si vede lo sfondo dell'applicazione).. invece sul mio 2.3.6 si vedono grigi e basta.. non c'è un codice per far vedere su tutti i device lo stesso stile grafico?

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ScrollView
« Risposta #14 il: 04 Marzo 2013, 20:04:58 CET »
0
Se non setti nessun colore, per default, i bottoni saranno grigi sul dispositivo. Prova a settargli un background...ad esempio puoi fare:
btn.setBackgroundColor(Color.red);
oppure definisci un colore nel file Color.xm che ad esempio chiami tuoColore e lo usi così:
btn.setBackgroundColor(getResources().getColor(R.Color.tuoColore))