Autore Topic: Non riesco ad scrollare una scrollview :-(  (Letto 928 volte)

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Non riesco ad scrollare una scrollview :-(
« il: 28 Marzo 2011, 18:45:28 CEST »
0
Ragazzi non riesco a farla scrollare... non ricevo errori ma non fà niente.
Codice: [Seleziona]
public class Slide extends Activity{
        @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.slide);
        ScrollView sv = new ScrollView(this);
        sv.scrollTo(200,0);
        }
}

Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/frame" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <HorizontalScrollView android:id="@+id/scollabile" android:layout_height="fill_parent" android:layout_width="wrap_content">
                <ImageView android:src="@drawable/whitworth3bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/immaginesotto"></ImageView>
        </HorizontalScrollView>
        <ImageView android:src="@drawable/whitworth3mask" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pngsopra"></ImageView>
        <TextView android:text="" android:id="@+id/test" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</FrameLayout>

e se poi volessi chiamare questo scroll con una funzione, che ne sò tipo scrolla(200) ?

Thanks

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #1 il: 29 Marzo 2011, 20:37:04 CEST »
0
nessuno sà?  o_O

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #2 il: 30 Marzo 2011, 09:16:54 CEST »
0
la scrollView che hai creato, l'hai agganciata al layout?
Perché, se intendi prenderti la ScrollView che hai già nel layout (id=scollabile), devi prenderla con findViewById.....

Così come fai tu, crei una scrollview e la scrolli....ma non la agganci da nessuna parte.

« Ultima modifica: 30 Marzo 2011, 09:19:22 CEST da 7h38ugg3r »
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #3 il: 30 Marzo 2011, 09:39:44 CEST »
0
eh ma se io ho già chiamato setContentView(R.layout.slide); e poi cerco con findViewById, non succede niente? che ne sò, due chiamate una al layout generale e uno alla scroll che è dentro al layou generale non mi impazzisce?

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #4 il: 30 Marzo 2011, 10:35:20 CEST »
0
se hai già fatto setContentView, puoi fare un append della tua view.
se hai già fatto setContentView, allora puoi cercarti la scrollView che hai già nel layout, e scrollarla.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #5 il: 30 Marzo 2011, 10:46:21 CEST »
0
grazie mille della spiegazione, verso pomeriggio provo e ti dico!

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #6 il: 30 Marzo 2011, 15:05:55 CEST »
0
Ho provato ma niente...
Codice: [Seleziona]
        HorizontalScrollView MiaVista = (HorizontalScrollView)findViewById(R.id.scollabile);
        MiaVista.scrollTo(200,0);

non dà errori ma non sposta mica

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #7 il: 30 Marzo 2011, 15:15:08 CEST »
0
mi funziona se la applico allimageview dentro alla scroll.
ma non è uno spostamento, è proprio un setting di inizio perchè da 0 a quei 200 che ho scritto non riesco a vedere...

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #8 il: 04 Aprile 2011, 10:31:14 CEST »
0
nessuno mi sà dire?
perchè lo srollTo mi serve, ma setta l'inizio della scroll.
se scrollto(200,0), allora i primi 200X non li posso più vedere dopo....
« Ultima modifica: 04 Aprile 2011, 11:04:25 CEST da zak84 »

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #9 il: 04 Aprile 2011, 12:42:32 CEST »
+1
Prova ad usare il metodo post della classe View :

Codice (Java): [Seleziona]
HorizontalScrollView miaVista = (HorizontalScrollView)findViewById(R.id.scollabile);
miaVista.post(new Runnable(){
    void run(){
        miaVista.scrollTo(X,Y);
    }
});

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #10 il: 04 Aprile 2011, 12:59:34 CEST »
0
Prova ad usare il metodo post della classe View :

Codice (Java): [Seleziona]
HorizontalScrollView miaVista = (HorizontalScrollView)findViewById(R.id.scollabile);
miaVista.post(new Runnable(){
    void run(){
        miaVista.scrollTo(X,Y);
    }
});

un thanks meritatissimo. in questo modo funziona!!! ma mi sai dire perchè concettualmente così và e prima no?
già che ci siamo, sai per caso come posso fare a salvare in un INTEGER la posizione X attuale di questa scrollView?

Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #11 il: 04 Aprile 2011, 16:15:24 CEST »
0
anzi no, è stato solo un sogno.... ora funziona ma non mi scrolla più la scrollView!!!
vi prego help  :'(
Codice: [Seleziona]
public class Slide extends Activity{
        @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
                setContentView(R.layout.slideboltingwhit);
        HorizontalScrollView MiaVista = (HorizontalScrollView)findViewById(R.id.scollabile);
        MiaVista.setHorizontalScrollBarEnabled(false);
        MiaVista.setVerticalScrollBarEnabled(false);
        final TextView textView1 = (TextView)findViewById(R.id.textView1);
        MiaVista.setOnTouchListener(new OnTouchListener(){
            @Override
            public boolean onTouch(View v, MotionEvent event){
                if(event.getAction()==MotionEvent.ACTION_DOWN){
                        textView1.setText("down");
                    return true;
                }
                if(event.getAction()==MotionEvent.ACTION_MOVE){
                        textView1.setText("move");
                    return true;
                }
                if(event.getAction()==MotionEvent.ACTION_UP){
                        textView1.setText("up");
                    return true;
                }     
                return false;
            }
        });
        }
}
Codice: [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/frame" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android">
        <HorizontalScrollView android:id="@+id/scollabile" android:layout_height="fill_parent" android:layout_width="wrap_content">
                <ImageView android:src="@drawable/metrico1bg" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/immaginesotto"></ImageView>
        </HorizontalScrollView>
        <ImageView android:src="@drawable/metrico1mask" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/pngsopra"></ImageView>
        <TextView android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</FrameLayout>

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #12 il: 05 Aprile 2011, 01:51:57 CEST »
0
Ma perchè usi un FrameLayout per contenere 3 elementi  o_O ? Il FrameLayout serve per contenere un solo oggetto.
Così com'è, con il solo codice che hai postato sopra,il layout non potrà funzionare e di conseguenza l'HorizontalScrollView, che oltretutto può scrollare solo in orizzontale :-P
La stessa HorizontalScrollView è un FrameLayout ! Quindi anche in questo caso puoi inserire un solo elemento.
Non so minimamente cosa tu voglia fare ma ti propongo uno scheletro di layout :

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:orientation="vertical">
        <HorizontalScrollView android:id="@+id/scollabile"
                android:layout_height="wrap_content" android:layout_width="fill_parent">
                <LinearLayout android:layout_width="fill_parent"
                        android:layout_height="fill_parent" android:orientation="horizontal">
                        <ImageView android:layout_height="wrap_content"
                                android:src="@drawable/metrico1bg" android:id="@+id/immaginesotto"
                                android:layout_width="wrap_content" android:paddingRight="500dp"></ImageView>
                        <ImageView android:src="@drawable/metrico1mask"
                                android:layout_width="wrap_content" android:layout_height="wrap_content"
                                android:id="@+id/pngsopra"></ImageView>
                </LinearLayout>
        </HorizontalScrollView>
        <TextView android:id="@+id/textView1" android:layout_width="wrap_content"
                android:layout_height="wrap_content" android:text="test">
        </TextView>
</LinearLayout>

Ho messo un po' di padding tra una immagine e l'altra per rendere l'idea visiva dello scrolling. Comunque ripeto non ho idea di cosa tu voglia realizzare, è solo per farti capire cosa c'è che non va, poi il layout te lo riscriverai come vuoi  :-)

Altra cosa importante. I return true del tuo OnTouchListener.
Se fai ritornare il valore true al listener l'evento sarà completato, e tutto quello che ne è conseguenza diretta (come lo scrolling) non sarà eseguito.
Dato che l'HorizontalScrollView implementa già il metodo
Codice (Java): [Seleziona]
public boolean  onTouchEvent  (MotionEvent ev)potresti usare quello, altrimenti se vuoi usare l'OnTouchListener rimuovi i return true e lascia solo un unico return false alla fine (sempre che tu non voglia bloccare lo scrolling appositamente :-P)

Codice (Java): [Seleziona]
MiaVista.setOnTouchListener(new OnTouchListener() {
                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                                        textView1.setText("down");
                                }
                                if (event.getAction() == MotionEvent.ACTION_MOVE) {
                                        textView1.setText("move");
                                }
                                if (event.getAction() == MotionEvent.ACTION_UP) {
                                        textView1.setText("up");
                                }
                                return false;
                        }
                });


Offline zak84

  • Utente normale
  • ***
  • Post: 165
  • Respect: +2
    • Mostra profilo
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #13 il: 05 Aprile 2011, 09:32:12 CEST »
0
il layout l'ho creato così perchè l'immagine pngsopra, non si deve muovere. sta sopra la horizzontalscrollview e funziona un pò come una maschera.
è giusto che si muova solo in orizzontale, è quello che voglio.
Ora come ora, mi accetta l'ontouch.
Quello che vorrei è passare la posizione X della scroll ad un altra scrollview, quando si verifica lo ACTION_UP... il problema è che l'altra scroll è nel secondo tab!!!

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Non riesco ad scrollare una scrollview :-(
« Risposta #14 il: 05 Aprile 2011, 10:46:23 CEST »
0
Per il layout ti conviene usare come root node un RelativeLayout. Usa il layout che ho postato sopra e modificalo con un RelativeLayout, così da sovrapporre l'immagine che deve stare sopra alla ScrollView. (se però dentro all'HorizontalScrollView non c'è niente da scrollare dubito che si riesca a scrollarla :-P)
Per il passaggio della posizione, dichiara una variabile di classe del tipo :
Codice (Java): [Seleziona]
protected static int posizioneX = 0 ;
Le Activity presenti nel TabHost si comportano come due Activity sovrapposte (in foreground quella nel tab aperto e in background quella nel tab chiuso), con l'unica differenza che l'Activity viene inizializzata (ovvero viene eseguito il metodo onCreate) solo quando si seleziona il tab relativo per la prima volta. Nei successivi passaggi tra un tab e l'altro, vengono richiamati i rispettivi metodi onPause (sull'Activity precedentemente visualizzata) e onResume (nell'Activity in primo piano).
Quindi, quando visualizzerai l'Activity con la seconda ScrollView, potrai usare nell'onCreate e nei successi onResume la variabile statica citata prima, usando il metodo scrollTo(X,Y) della ScrollView.