Autore Topic: Layout Gallery non funziona bene  (Letto 746 volte)

Offline andreaginobili

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7, Ubuntu
Layout Gallery non funziona bene
« il: 05 Gennaio 2012, 18:16:36 CET »
0
Ciao ragazzi vi spiego il mio problema, ho creato una gallery con il rispettivo adapter, in questo ho un metodo ke mi torna un linear layout fatto così :
Codice (Java): [Seleziona]
private LinearLayout createContent(int position) {
                final Libro libro = items.get(position);
                LinearLayout outside = new LinearLayout(context);
                outside.setOrientation(LinearLayout.HORIZONTAL);
                RelativeLayout.LayoutParams outsideParams = new RelativeLayout.LayoutParams(
                                RelativeLayout.LayoutParams.WRAP_CONTENT,
                                RelativeLayout.LayoutParams.WRAP_CONTENT);
                outsideParams.addRule(RelativeLayout.CENTER_IN_PARENT);
                outside.setLayoutParams(outsideParams);

                LinearLayout immag = new LinearLayout(context);
                immag.setOrientation(LinearLayout.VERTICAL);
                RelativeLayout.LayoutParams immagP = new RelativeLayout.LayoutParams(
                                RelativeLayout.LayoutParams.WRAP_CONTENT,
                                RelativeLayout.LayoutParams.WRAP_CONTENT);
                immagP.addRule(RelativeLayout.CENTER_IN_PARENT);
                immag.setLayoutParams(outsideParams);

                outside.addView(immag);

                LinearLayout resto = new LinearLayout(context);
                resto.setOrientation(LinearLayout.VERTICAL);
                RelativeLayout.LayoutParams restoParams = new RelativeLayout.LayoutParams(
                                RelativeLayout.LayoutParams.WRAP_CONTENT,
                                RelativeLayout.LayoutParams.WRAP_CONTENT);
                restoParams.addRule(RelativeLayout.CENTER_IN_PARENT);
                resto.setLayoutParams(outsideParams);
               
               
                outside.addView(resto);

                TextView votesTV = new TextView(context);
                votesTV.setText("Posizione: " + items.get(position).getPosition());
                votesTV.setTextSize(20);
                votesTV.setTextColor(android.graphics.Color.WHITE);
                resto.addView(votesTV);

                if (libro.getImage() != null) {
                        ImageView imageView = new ImageView(context);
                        imageView.setImageBitmap(libro.getImage());
                        immag.addView(imageView);
                }

                TextView songTV = new TextView(context);
                songTV.setTextSize(18);
                songTV.setText(libro.getTitle());
                songTV.setTextColor(android.graphics.Color.WHITE);
                resto.addView(songTV);

                TextView artistTV = new TextView(context);
                artistTV.setText(libro.getAut());
                artistTV.setTextSize(18);
                artistTV.setTextColor(android.graphics.Color.WHITE);
                resto.addView(artistTV);

                TextView priceTv = new TextView(context);
                priceTv.setText(libro.getPrezzo());
                priceTv.setTextSize(18);
                priceTv.setTextColor(android.graphics.Color.WHITE);
                resto.addView(priceTv);

                Button b = new Button(context);
                b.setText("Trama");
                resto.addView(b);
                b.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                try {
                                        String link = libro.getLink().trim();
                                        String titolo = ""+libro.getTitle()+"\n"+libro.getAut();
                                        AsynCalcolamiTramaThread a = (AsynCalcolamiTramaThread) new AsynCalcolamiTramaThread(
                                                        v, link, titolo).execute();
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        }
                });

                return outside;
        }

allora ho 2 problemi:
1) quando ho un testo nelle textView che occupa 2 righe il layout totate se ne va tutto a sinistra invece di restare centrato!
2) il pulsante "trama" si adatta e quindi a volte è enorme mentre io vorrei fosse di dimensione fissa..
Sapete aiutarmi???
PS: vi allevo foto di come si presenta il problema.

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:Layout Gallery non funziona bene
« Risposta #1 il: 07 Gennaio 2012, 14:00:31 CET »
0
sono un po di corsa e non so se ho capito bene il problema, ma da quello che ho capito,per la textview non puoi impostare una larghezza massina e renderla scrollabile? cosi la dimensione rimane fissa e non ti sballa nulla..

per il bottone invece puoi usare:
b.setWidth(pixels);
oppure la cosa migliore penso sia impostare
android:layout_width="wrap_content"
nell'xml
(non mi sembra sia possibile impostare wrap_content da java...ma magari qualcuno mi puo' correggere se dico una cavolata :D
« Ultima modifica: 07 Gennaio 2012, 14:09:37 CET da frecciak »
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Layout Gallery non funziona bene
« Risposta #2 il: 07 Gennaio 2012, 14:25:44 CET »
0
Giusto una curiosità, come mai non hai usato un layout xml? Dovresti anche usare il riciclo delle view che si usa con le ListView, la tua gallery diventerebbe molto più fluida!

Offline andreaginobili

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7, Ubuntu
Re:Layout Gallery non funziona bene
« Risposta #3 il: 07 Gennaio 2012, 19:41:10 CET »
0
e come faccio a impostare una text view di dimensione fissa??
Per Ricky: avevo provato a farlo via xml ma mi sballava sempre e non riuscivo quindi ho optato per questa soluzione.. Non è possibile risolvere questi problemi da java?

Offline frecciak

  • Utente normale
  • ***
  • Post: 231
  • Respect: +16
    • Mostra profilo
  • Dispositivo Android:
    galaxy s
  • Sistema operativo:
    windows 7
Re:Layout Gallery non funziona bene
« Risposta #4 il: 08 Gennaio 2012, 15:18:47 CET »
0
da java non saprei dirti..
però posso consigliarti i relative layout per fare quello che vedo nella tua immagine..
prova un layout fatto cosi:
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >



    <RelativeLayout
       android:id="@+id/relativeLayout1"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:background="#ffffff">
       
         <RelativeLayout
       android:id="@+id/relativeLayout2"
       android:layout_width="wrap_content"
       android:layout_height="match_parent"
       android:background="#fffff0">

        <ImageView
           android:id="@+id/imageView1"
           android:layout_width="150sp"
           android:layout_height="150sp"
           android:layout_alignParentLeft="true"
           android:layout_alignParentTop="true"
           android:src="@drawable/ic_launcher" />
     </RelativeLayout>
     
           <RelativeLayout
                      android:id="@+id/relativeLayout3"
                     android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:background="#000000"
                      android:layout_toRightOf="@+id/relativeLayout2">
                   <TextView
                      android:id="@+id/textView1"
                      android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                           android:layout_alignParentTop="true"
                           android:text="@string/libro1"/>

                  <Button
                      android:id="@+id/button1"
                      android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
                     android:layout_alignParentLeft="true"
                     android:layout_below="@+id/textView1"
                     android:text="Trama" />

                        </RelativeLayout>
    </RelativeLayout>

</ScrollView>
poi in res/values/strings.xml crei una stringa in questo modo:
Codice (XML): [Seleziona]
    <string name="libro1">
    Posizione 1  \n Titolo (se diventa lungo va a capo da solo)
    \n nome
    \n Descrizione bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
    \n Prezzo
    </string>

in questo modo, l'immagine del libro rimarrà sempre a sinistra, e tutto il resto sempre a destra dell'immagine..
naturalment se guardi il layout nel graphical layout di eclipse, ti sembrerà incasinato...quindi prima di scartare questa opzione, provalo nell'emulatore di eclipse :D
Se le risposte ti hanno aiutato, metti un ..a te non costa nulla, ma a chi ti ha aiutato fa molto piacere riceverlo!!

Offline andreaginobili

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 7, Ubuntu
Re:Layout Gallery non funziona bene
« Risposta #5 il: 14 Gennaio 2012, 15:41:41 CET »
0
No da xml non riesco devo per forza modificare quello di sopra