Я просматриваю и исправляю некоторые проблемы в приложении для 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 точек ,
Но на небольших экранированных устройствах изображения растянуты. Я думаю, что жирная строка кода вызывает это; но я не мог это исправить.
У вас есть предложение, как я могу исправить эту проблему и поддерживать большие и маленькие экраны?
Почему вы не можете дать что-то вроде этого вместо view.setLayoutParams (новые LayoutParams (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); – Triode
, потому что у меня нет этого варианта; позвольте мне попробовать :) –
спасибо, это решило мою проблему; но я не мог отметить как ответ, потому что вы разместили в качестве комментария. –