Подтвердить что ты не робот

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, но не повезло

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

Спасибо

4b9b3361

Ответ 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" (некоторое отрицательное число)