Android: сокращение пространства между столбцами в GridView
См. прикрепленный снимок экрана, где я пытаюсь уменьшить пространство между столбцами в моем GridView.
My main.xml выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<GridView
android:id="@+id/gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:stretchMode="columnWidth"
android:gravity="center"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo"/>
<TextView
android:text="@string/game_score"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>
Я создаю ImageViews в своем коде из растрового изображения. Однако я не указываю никаких отступов или интервалов или иначе.
Как я могу уменьшить это пространство между столбцами? Я пробовал различные настройки как для GridViews, так и для ImageViews, но не повезло
Изображение
:
Спасибо
Ответы
Ответ 1
попытайтесь исправить количество столбцов, необходимых в файле xml для сетки, и установите параметр stretchMode как columnwidth
android:numColumns="3"
android:columnWidth="60dp"
android:stretchMode="columnWidth"
или установите горизонтальное и вертикальное расстояние в xml для сетки
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
Ответ 2
Удалить атрибут Gravity и использовать следующий режим
android:stretchMode="NONE"
Ответ 3
Пробел между столбцами состоит в том, что ваш элемент gridview не полностью занимает пространство столбцов, предоставляемое с помощью вида сетки.
Решение для удаления пространства между столбцами - это измерение ширины и высоты экрана устройства и деление на количество столбцов и строк. Это даст ширину и высоту для каждого элемента вида сетки.
вам нужно назначить эту высоту и ширину для просмотра изображений, а также масштабировать растровое изображение в соответствии с представлением изображения.
Код:
DisplayMetrics displayMetrics=getResources().getDisplayMetrics();
screen_width=displayMetrics.widthPixels; //width of the device screen
screen_height=displayMetrics.heightPixels; //height of device screen
int view_width=screen_width/number of columns; //width for imageview
int view_height=screen_height/number of rows; //height for imageview
Imageview myImageView=(ImageView)findViewById(R.id.my_id);
myImageView.getLayoutParams().width=view_width;
myImageView.getLayoutParams().height=view_height;
Bitmap myImage=Bitmap.createScaledBitmap(src, view_width, view_height, true);//scaling the image to match the size of image view
Ответ 4
Привет, у меня была та же проблема, которую я решил с помощью mygridView.setStretchMode(GridView.NO_STRETCH);
Ответ 5
У меня была аналогичная проблема с небольшим горизонтальным интервалом между столбцами в нескольких устройствах. (Мне не потребовалось места.) Я правильно вычислил ширину элемента сетки, разделив его на общую ширину. Я получал эту проблему только на устройствах Lenovo.
следующий код был в активности, связанной с сеткой.
int myRequestedColumnWidth = myGridViewContentMain.getRequestedColumnWidth();
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize( size );
int width = size.x;
int height = size.y;
int myGridColumns = width / myRequestedColumnWidth;
if ( myGridColumns == 0 || myGridColumns == 1 )
myGridColumns = 2;
myColumnWidth = ( width / myGridColumns );
myGridViewContentMain.setNumColumns(myGridColumns);
следующий код был в макете xml для сетки
<GridView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/gridViewContentMain"
android:layout_centerHorizontal="true"
android:numColumns="2"
android:columnWidth="200dp"
android:verticalSpacing="0dp"
android:layout_below="@+id/relativeLayoutMainHeader"
android:layout_above="@+id/relativeLayoutProgressBar"
/>
Мне не удалось решить проблему после изменения значений режима растяжения.
Но следующее значение в макете xml для GridView сделало трюк.
android:horizontalSpacing="0dp"
Надеюсь, кто-то вроде меня может найти это полезным.
С уважением.
Ответ 6
У меня была та же проблема. Я минимизировал пространство столбцов, выполнив это
для gridView
android:numColumns="2"
android:columnWidth="90dp"
android:verticalSpacing="0dp"
android:horizontalSpacing="-30dp"
android:stretchMode="columnWidth"
для imageView
android:layout_width="115dp"
android:layout_height="150dp"
android:padding="1dp"
android:layout_marginLeft="30dp"
android:layout_marginRight="-15dp"
Ответ 7
Вы можете уменьшить пробел b/w столбца, установив android: horizontalSpacing = "- 10dp" (некоторое отрицательное число)