2012-06-20 3 views
13

Je suis un nouvel utilisateur ici et travaille application Android qui demande une vue de défilement personnalisé (montré comme lien ci-dessous). Il est très similaire à un gridview sauf la première image. J'ai essayé d'utiliser ajouter une grande imageview avec gridview. Mais ça échoue. Quelqu'un a une suggestion?Agrandir l'image pour le premier élément de la gridview android

enter image description here

Répondre

9

Je MANGE pour obtenir l'image suivante en utilisant le code ci-dessous: enter image description here

Je me déplace le code à ce blog:

// please check this part. 
      @Override 
      public View getView(int arg0, View arg1, ViewGroup arg2) { 
       ImageView imageView; 
       if(arg1==null){ 
        imageView = new ImageView(DemoGridViewActivity.this){ 
         @Override 
         protected void onMeasure(int widthMeasureSpec, 
           int heightMeasureSpec) { 
          super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
          setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); 
         } 
        }; 
       }else{ 
        imageView = (ImageView) arg1; 
       } 

       imageView.setLayoutParams(new GridView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 
       imageView.setBackgroundColor(Color.BLUE); 
       imageView.setScaleType(ScaleType.FIT_XY); 
       Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
//according to the position return proper imageview with bitmap 
//for case 0 - top-left part 
//for case 1 - top-right 
//for case 5 - bottom-left 
//for case 6 - bottom-right 


       switch(arg0){ 
       case 0: 
        imageView.setImageBitmap(Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth()/2, bitmap.getHeight()/2)); 
        imageView.setBackgroundColor(Color.RED); 
        return imageView; 
       case 1: 
        imageView.setImageBitmap(Bitmap.createBitmap(bitmap, bitmap.getWidth()/2, 0, bitmap.getWidth()/2, bitmap.getHeight()/2)); 
        imageView.setBackgroundColor(Color.GREEN); 
        return imageView; 
       case 5: 
        imageView.setImageBitmap(Bitmap.createBitmap(bitmap, 0, bitmap.getHeight()/2, bitmap.getWidth()/2, bitmap.getHeight()/2)); 
        imageView.setBackgroundColor(Color.YELLOW); 
        return imageView; 
       case 6: 
        imageView.setImageBitmap(Bitmap.createBitmap(bitmap, bitmap.getWidth()/2, bitmap.getHeight()/2, bitmap.getWidth()/2, bitmap.getHeight()/2)); 
        imageView.setBackgroundColor(Color.MAGENTA); 
        return imageView; 
       default: 
        imageView.setImageResource(R.drawable.ic_launcher); 
        return imageView; 
       } 
      } 

     } 
    } 


<?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" > 

     <GridView 
      android:id="@+id/gridView1" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:numColumns="5" > 
     </GridView> 

</LinearLayout> 
+1

Évitez d'afficher des applications complètes de travail, bâton à des fragments, c'est plus efficace pour faire un point. – JoxTraex

+0

J'ai créé un blog http://sudarnimalan.blogspot.sg/2012/06/android-bigger-image-for-first-item-of.html pour expliquer cela. 1. vérifier la méthode getView, 2. vérifier le commutateur (arg0) où dans le cas 0, cas 1, cas 5 et cas 6 définissent la partie supérieure gauche, supérieure droite, inférieure gauche, en bas à droite de l'image bitmap . –

+0

Comment puis-je ajouter un TextView entre deux éléments gridview comme vous l'avez fait avec ImageView? – ClarkXP

Questions connexes