Autore Topic: Inserimento dinamico ImageView  (Letto 844 volte)

Offline platypus85

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Optimus One...ed emulatori vari
  • Sistema operativo:
    Windows 7, Mac OS X 10.5
Inserimento dinamico ImageView
« il: 07 Novembre 2012, 15:52:12 CET »
0
Ciao a tutti,
qualcuno ha avuto a che fare con l'inserimento dinamico di ImageViews in un LinearLayout?
Devo caricare delle immagini parsando un file JSON, ma vengono visualizzate solo le prime, poi le altre vengono tagliate.
Vorrei che venissero disposte nel layout riempiendolo tutto verticalmente in altezza e larghezza

ecco il codice

Codice: [Seleziona]
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_sponsors, container, false);
        LinearLayout mainLayout = (LinearLayout)view.findViewById(R.id.fragmentPlaceDetail);

        ArrayList<Sponsor> sponsorArray = SponsorManager.getInstance().getSponsors();

        LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
       
        LinearLayout.LayoutParams imageParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
       
        // Ordinamento degli sponsor in base alla categoria
        Collections.sort(sponsorArray, new Sponsor.SponsorCategoryComparator());

        if (sponsorArray != null) {
            for (final Sponsor sponsor : sponsorArray) {
                String descCat = sponsor.getDescrizione_categoria();
                LinearLayout check = (LinearLayout)view.findViewWithTag(descCat);

                if (check == null) {

                    // HEADER soponsors - Layout
                    LinearLayout checkNew = new LinearLayout(getActivity());
                    checkNew.setLayoutParams(params);
                    checkNew.setTag(descCat);

                    LinearLayout titleContainer = new LinearLayout(getActivity());
                    titleContainer.setLayoutParams(params);
                    titleContainer.setBackgroundColor(getResources().getColor(R.color.tabDark));

                    // HEADER sponsors - TextView
                    TextView tv = new TextView(getActivity());
                    tv.setGravity(Gravity.CENTER);
                    tv.setText(sponsor.getDescrizione_categoria().toUpperCase());
                    tv.setTextColor(getResources().getColor(R.color.headers_text));
                    tv.setPadding(0, 2, 0, 2);

                    // ImageView sponsors
                    ImageView iv = new ImageView(getActivity());
                    iv.setScaleType (ImageView.ScaleType.MATRIX);
                    //iv.setLayoutParams(imageParams);
                    iv.setImageBitmap(BitmapUtils.loadBitmap(sponsor.getLogo_150x60()));
                    iv.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sponsor
                                    .getLink_sito()));
                            startActivity(intent);
                        }
                    });

                    titleContainer.addView(tv);
                    checkNew.addView(iv);
                    mainLayout.addView(titleContainer);
                    mainLayout.addView(checkNew);

                } else {

                    // ImageView sponsors
                    ImageView iv = new ImageView(getActivity());
                    iv.setImageBitmap(BitmapUtils.loadBitmap(sponsor.getLogo_150x60()));
                    //iv.setLayoutParams(imageParams);
                    iv.setScaleType (ImageView.ScaleType.MATRIX);
                    iv.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(sponsor
                                    .getLink_sito()));
                            startActivity(intent);

                        }
                    });
                    check.setLayoutParams(params);
                    iv.setScaleType (ImageView.ScaleType.MATRIX);
                    check.setTag(descCat);
                    check.addView(iv);
                }

            }
        }

        return view;
    }

Offline kalacta269

  • Utente normale
  • ***
  • Post: 152
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Asus Transformer pad tf300
  • Sistema operativo:
    windows7
Re:Inserimento dinamico ImageView
« Risposta #1 il: 07 Novembre 2012, 15:59:01 CET »
0
Probabilmente non trovano spazio dovresti fare lo scroll del layout secondo me

Offline platypus85

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Optimus One...ed emulatori vari
  • Sistema operativo:
    Windows 7, Mac OS X 10.5
Re:Inserimento dinamico ImageView
« Risposta #2 il: 07 Novembre 2012, 16:02:09 CET »
0
Probabilmente non trovano spazio dovresti fare lo scroll del layout secondo me

A runtime si creano tot linearlayouts contententi tot imageviews.

I vari linearlayouts sono in una scrollview, per cui lo spazio ce l'avrebbero, solo che le imageviews sforano orizzontalmente rendendo impossibile la loro visualizzazione

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:Inserimento dinamico ImageView
« Risposta #3 il: 07 Novembre 2012, 16:34:13 CET »
0
quanto sono grandi le immagini? più della risoluzione del display? in questo caso credo la colpa sia del fatto che i params della imageview sono wrap content, quindi ovviamente se l'immagine è larga 2000px il wrap content sono 2000px....
prova a settargli una dimensione fissa o un fill parent dell'ImageView dentro ai linear layout
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