Android: Уменьшить пространство между колоннами в GridView

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

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

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

Спасибо

17
задан JPM 15 September 2011 в 20:16
поделиться

2 ответа

Пространство между столбцами связано с тем, что ваш элемент 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
ответ дан 30 November 2019 в 10:57
поделиться

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

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

Привет.

1
ответ дан 30 November 2019 в 10:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: