Android: уменьшить пространство между столбцами в GridView - PullRequest
16 голосов
/ 15 сентября 2011

См. Прикрепленный скриншот, где я пытаюсь уменьшить пространство между столбцами в моем GridView.

Мой 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 в моем коде из растрового изображения. Однако я не указываю какие-либо отступы, интервалы или иное.

Как я могу уменьшить это пространство между столбцами? Я пробовал различные настройки как для GridView, так и для ImageViews, но безуспешно

Изображение here:

Спасибо

Ответы [ 7 ]

23 голосов
/ 15 сентября 2011

Попытайтесь исправить количество столбцов, необходимое в XML-файле для сетки, и установите stretchMode в качестве ширины столбца

android:numColumns="3"
android:columnWidth="60dp"
android:stretchMode="columnWidth"

или установите горизонтальный и вертикальный интервал в xml для сетки

android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
11 голосов
/ 15 сентября 2011

Удалите атрибут Gravity и используйте следующий режим

android:stretchMode="NONE"
4 голосов
/ 27 июня 2015

Привет, у меня была та же проблема, которую я решил mygridView.setStretchMode(GridView.NO_STRETCH);

4 голосов
/ 05 декабря 2014

Пространство между столбцами связано с тем, что ваш элемент 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
1 голос
/ 26 января 2016

У меня была такая же проблема.Я уменьшил пространство столбцов, выполнив это

для 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"
1 голос
/ 08 декабря 2015

У меня была похожая проблема с небольшим горизонтальным интервалом между столбцами в нескольких устройствах. (Мне не требовалось места.) Я правильно рассчитывал ширину элемента сетки, разделяя ее на общую ширину. Эта проблема возникала только на устройствах 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"

Надеюсь, кто-то вроде меня может найти это полезным.

Привет.

0 голосов
/ 19 июня 2017

Вы можете уменьшить размер ч / б столбца, установив андроид: horizontalSpacing = "- 10dp" (некоторое отрицательное число)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...