Android GridView несовершенство, как удалить лишнее свободное пространство справа

У меня есть календарь на основе GridView. У меня есть следующий формат XML с селектором, установленным на null, таким образом, android:listSelector="@null" в соответствии с рекомендациями, которые я получил с этого сайта. Теперь я получаю полосу шириной несколько пикселей справа от GridView. Зачем? Я попробовал все, что мог, но воспользоваться. Вот мой XML-макет:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridView android:id="@+id/calendar" android:layout_width="fill_parent" android:layout_height="match_parent" android:horizontalSpacing="-1px" android:numColumns="7" android:stretchMode="columnWidth" android:gravity="center" android:verticalSpacing="-1px" android:listSelector="@null" > </GridView> </LinearLayout> 

Я получаю эту картину:

Введите описание изображения здесь

Это пространство связано с несовершенным вычислением для каждой строки вашей сетки. Например, ширина вашего устройства составляет 320 пикселей, и у вас есть 7 строк, попробуйте любой расчет, который соответствует 320 px. Если ширина каждой ячейки равна 45.71428571428571 px, только тогда ее можно уменьшить.

Другой вариант

Примените свойство android: gravity = "center" в вашей сетке, чтобы пробелы были одинаково разделены слева направо

В моем случае у меня был горизонтальный интервал как 1dp

 android:horizontalSpacing="1dp" 

Поэтому, чтобы решить это, я просто поместил правильное дополнение как -1dp

 android:paddingRight="-1dp" 

Хотя я ожидал получить место на левой стороне из-за этого, но он работал правильно

Попробуйте использовать

 android:layout_margin="0dp" android:padding="0dp" 

Также вы можете выделить это пространство для полосы прокрутки.
И почему у вас есть вертикальное и горизонтальное расстояние с отрицательными значениями?

У меня была такая же проблема, хотя в моем случае у меня не было контроля над экземпляром GridView поэтому я не мог прочитать ширину столбца. Тем не менее я мог подклассировать его контейнер.
Это не очень ортодоксально, но вы можете переопределить метод onMeasure и добавить несколько пикселей.
Что-то вроде этого:

 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int RIGHT_MARGIN_OVERSIZE_DIP = 6; super.onMeasure(widthMeasureSpec, heightMeasureSpec); int width = this.getMeasuredWidth() int overSize = (int)((getResources().getDisplayMetrics().density*RIGHT_MARGIN_OVERSIZE_DIP) + 0.5f); widthMeasureSpec = MeasureSpec.makeMeasureSpec(width + overSize, MeasureSpec.getMode(widthMeasureSpec)); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } 
 grid.setColumnWidth(grid.getColumnWidth()+1); 

Это получит текущий ColumnWidth и добавит к нему 1 пиксель. Не забудьте использовать это после onCreateView, так как перед этим нужно инициализировать сетку.

Кроме того, ваш вид сетки должен использовать match_parent (высота и ширина). Изображение / макет в столбце также должно быть match_parent.

Intereting Posts
Загрузите страницу входа google в случае, если пользователь не зарегистрирован Изменение цвета значка навигационного ящика в шаблоне по умолчанию для Android Studio Не найдено никакой активности пусковой установки! Не удается заставить виджет работать Перечислить все элементы в привязках Selenium Python для Appium Почему во время запуска приложения всегда отображается GC_CONCURRENT FREED и GC_CONCURRENT ALLOCATE в Android Logcat? AppStateClient loadState получает нулевые байты ADB не работает и не смог инициализировать ошибку потока монитора, возникающую в ddms в android SMS_RECEIVED не работает над сэндвичем с мороженым? Android Mapview не загружает плитки на HTC Desire? Offline maps SDK для Android и iOS Android – DialogFragment с компоновкой, содержащей фрагмент Android: нужно закрыть Db после закрытия курсора Сообщения об ошибках libagl alphaPlaneWorkaround в LogCat String.equals () с несколькими условиями (и одним действием по результату) Устройство Android Disappearing