2012-03-28 3 views
0

Я просматриваю и исправляю некоторые проблемы в приложении для Android, которое было разработано другим разработчиком.ImageButtons In GrdView Различные размеры экрана

Он создал схему экрана для обычного размера экрана и вставил в нее GridView.

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:numColumns="auto_fit" 
    android:verticalSpacing="45dp" 
    android:horizontalSpacing="10dp" 
    android:columnWidth="120dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
    android:layout_marginTop="30dp" 
    android:scrollbars="none" 
/> 

На изображениях со стороны кода изображены integer массив.

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 
     }; 

Целочисленный массив с привязкой к сетке с этим кодом.

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

Так вот ISE ImageButtonAdapter класс

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; 
    } 

Кроме того, Рез \ папка вытяжки-ИПЧР содержит изображения с высоким разрешением, 167x161 точек и разрешение \ папка вытяжки-MDPI содержит изображения нормального разрешения, 82x72 точек ,

Но на небольших экранированных устройствах изображения растянуты. Я думаю, что жирная строка кода вызывает это; но я не мог это исправить.

У вас есть предложение, как я могу исправить эту проблему и поддерживать большие и маленькие экраны?

+0

Почему вы не можете дать что-то вроде этого вместо view.setLayoutParams (новые LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); – Triode

+0

, потому что у меня нет этого варианта; позвольте мне попробовать :) –

+0

спасибо, это решило мою проблему; но я не мог отметить как ответ, потому что вы разместили в качестве комментария. –

ответ

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

Это то, что я обычно делаю, надеюсь, что это поможет.

0

да из-за этого вы получаете эту проблему

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

изменение этого кода, как этот

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

ширина магазина, значение высоты в папке values-->dimentions.xml как этот

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

HTH ..

+0

Может использоваться папка значений, например, значения-small или values-mdpi. Если бы я не мог найти смысла писать значения, закодированные или определяемые в файле ресурсов. Я надеюсь, что вы можете объяснить –

+0

, он не будет автоматически регулироваться в зависимости от размеров экрана, если мы будем использовать DP ... –

+0

действительно, я попробую и дам вам знать о результате. –

Смежные вопросы