2012-03-28 10 views
0

Ich überprüfe und behebe einige Probleme bei einer Android-Anwendung, die von anderen Entwicklern entwickelt wurde.ImageButtons In GrdView Verschiedene Bildschirmgrößen

Er erstellte ein Bildschirmlayout für die normale Bildschirmgröße und legte eine GridView darin.

Bei Codeseitenbildern definiert als integer Array.

Integer[] a1 = {    R.drawable.image1,R.drawable.image2,R.drawable.image3,R.drawable.image4,    R.drawable.image5,R.drawable.image6,R.drawable.image6,R.drawable.image7,R.drawable.image8,    R.drawable.image9,R.drawable.image10,R.drawable.image11 
     }; 

Integer-Array binded gridview mit diesem Code.

GridView gridview = (GridView) findViewById(R.id.gridview);  
gridview.setAdapter(new ImageButtonAdapter(this,infox)); 

Also hier ise ImageButtonAdapter Klasse

public class ImageButtonAdapter extends BaseAdapter { 

     private Context mContext; 

     public ImageButtonAdapter(Context c, Integer[] imageIds) { 
      mContext = c;   
      mThumbIds = imageIds; 
     } 

     public int getCount() { 
      return mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     public View getView(final int position, View convertView, ViewGroup parent) { 

      ImageButton imageButtonx; 
      if (convertView == null) { 
       imageButtonx = new ImageButton(mContext); 
       imageButtonx.setBackgroundColor(Color.TRANSPARENT);       
       **imageButtonx.setLayoutParams(new GridView.LayoutParams(160, 160));** 
       imageButtonx.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       imageButtonx.setPadding(5, 5, 5, 5); 
       /* if (position == 10) 
       { 
        imageButtonx.setVisibility(ImageButton.GONE); 
       } 
       */ 

      } else { 
       imageButtonx = (ImageButton) convertView; 
      } 

       setMyTag(imageButtonx,mThumbIds[position]); 
      imageButtonx.setImageResource(mThumbIds[position]); 

      return imageButtonx; 
      } 
     private Integer[] mThumbIds; 
    } 

Auch res \ ziehbar-hdpi Ordner enthält hochauflösende Bilder, die 167x161 Pixel und res \ ziehbar-MDPI Ordner enthält normale Auflösung Bilder, die 82x72 Pixel ist .

Aber bei kleinen gerasterten Geräten, Bilder gestreckt. Ich denke, dass die fettgedruckte Codezeile dies verursacht; aber ich konnte es nicht reparieren.

Haben Sie Vorschläge, wie kann ich dieses Problem beheben und große normale und kleine Bildschirme unterstützen?

+0

Warum kann man stattdessen so etwas nicht geben view.setLayoutParams (new LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); – Triode

+0

weil ich diese Option nicht mache; lass mich es versuchen :) –

+0

danke, das hat mein Problem gelöst; aber ich konnte nicht als antwort markieren, weil du als kommentar gepostet hast. –

Antwort

0
LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

Dies ist, was ich normalerweise tun, hoffe, dass dies helfen wird.

0

ja aufgrund dieser Sie, dieses Problem immer dieser Code

imageButtonx.setLayoutParams(new GridView.LayoutParams(160, 160)) 

Änderung wie diese Breite

imageButtonx.setLayoutParams(new GridView.LayoutParams(
         (int) getResources().getDimension(R.dimen.width),                     
         (int) getResources().getDimension(R.dimen.height))); 

speichern, Höhenwert im values-->dimentions.xml Ordner wie diese

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="width">80dp</dimen> // your desired values 
    <dimen name="height">80dp</dimen> 
</resources> 

HTH ..

+0

Kann Werte Ordner wie Werte-small oder Werte-mdpi verwendet werden. Wenn nicht, würde ich keinen Sinn finden, um Werte zu schreiben oder in der Ressourcendatei zu definieren. Ich hoffe, Sie können –

+0

keine Notwendigkeit erklären, es wird automatisch je nach Bildschirmgrößen anpassen, wenn wir als DP verwenden ... –

+0

wirklich, ich werde versuchen und Sie über das Ergebnis wissen lassen. –

Verwandte Themen