Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 删除GridView中的填充_Android_Gridview - Fatal编程技术网

Android 删除GridView中的填充

Android 删除GridView中的填充,android,gridview,Android,Gridview,在SO中,有人多次询问如何删除GridView中的填充,但没有一个答案适合我 我有一个网格视图,可以设置网格布局的列数和总宽度。需要尺寸为66dpx66dp的物品。不知何故,物品是方形的,但比66x66小,周围有大量填充物。为什么? int zz = .. // number of columns comes from outside gridview.setNumColumns(zz); LinearLayout.LayoutParams linearParams = (LinearLayou

在SO中,有人多次询问如何删除
GridView
中的填充,但没有一个答案适合我

我有一个
网格视图
,可以设置网格布局的列数和总宽度。需要尺寸为
66dp
x
66dp
的物品。不知何故,物品是方形的,但比66x66小,周围有大量填充物。为什么?

int zz = .. // number of columns comes from outside
gridview.setNumColumns(zz);
LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams)gridview.getLayoutParams();
linearParams.width=66*zz;
gridview.setLayoutParams(linearParams);


您正在使用的
ImageView
没有定义

ImageView
的默认值为
FIT_CENTER
,但可能是您使用的图像大小不完全适合视图纵横比

您很可能需要
CENTER\u CROP
来满足您的需求

<ImageView
        android:id="@+id/icon"
        android:scaleType="centerCrop"
        android:layout_width="66dp"
        android:layout_height="66dp"
        android:padding="0dp"
        android:background="@android:color/holo_orange_light"/>


可以找到所有
ImageView.ScaleType
值的可视示例

您正在使用的
ImageView
没有定义

ImageView
的默认值为
FIT_CENTER
,但可能是您使用的图像大小不完全适合视图纵横比

您很可能需要
CENTER\u CROP
来满足您的需求

<ImageView
        android:id="@+id/icon"
        android:scaleType="centerCrop"
        android:layout_width="66dp"
        android:layout_height="66dp"
        android:padding="0dp"
        android:background="@android:color/holo_orange_light"/>


可以找到所有
ImageView.ScaleType
值的可视示例。首先,您不应该使用
fill\u parent
,它已重命名为
match\u parent

第二,该守则:

LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) gridview.getLayoutParams();
linearParams.width= 66 * zz;
gridview.setLayoutParams(linearParams);
实际上是将
GridView
的宽度设置为
wrap\u content
,所以在XML中这样做。此外,如果您根据屏幕宽度设置列数,则可以更轻松地进行设置。通过将
GridView
的宽度设置为
match\u parent
,并将
numColumns
设置为
auto\u fit
。或者使用
integers.xml
values资源,并使用资源限定符,如
values
values-w600dp
values-w840dp
为不同的屏幕宽度设置整数

接下来,设置
gravity=“center”
可能是填充问题的根源,因为该属性正试图在
GridView
中使视图居中

最后,将视图包装为不必要的布局。任何
视图
都可以是XML的基础,您不需要将它们包装在“布局”中。您的
GridView
应该更像这样:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_view_1"
    android:layout_width="wrap_content" android:layout_height="match_parent"
    android:stretchMode="none" android:numColumns="@integer/column_number"/>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/icon" android:layout_width="66dp" android:layout_height="66dp"
    android:scaleType="centerCrop"/>

这些更改可能不会立即解决您的问题,但会使您的工作更易于管理。

首先,您不应使用
填充父项
,它已重命名为
匹配父项

第二,该守则:

LinearLayout.LayoutParams linearParams = (LinearLayout.LayoutParams) gridview.getLayoutParams();
linearParams.width= 66 * zz;
gridview.setLayoutParams(linearParams);
实际上是将
GridView
的宽度设置为
wrap\u content
,所以在XML中这样做。此外,如果您根据屏幕宽度设置列数,则可以更轻松地进行设置。通过将
GridView
的宽度设置为
match\u parent
,并将
numColumns
设置为
auto\u fit
。或者使用
integers.xml
values资源,并使用资源限定符,如
values
values-w600dp
values-w840dp
为不同的屏幕宽度设置整数

接下来,设置
gravity=“center”
可能是填充问题的根源,因为该属性正试图在
GridView
中使视图居中

最后,将视图包装为不必要的布局。任何
视图
都可以是XML的基础,您不需要将它们包装在“布局”中。您的
GridView
应该更像这样:

<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/grid_view_1"
    android:layout_width="wrap_content" android:layout_height="match_parent"
    android:stretchMode="none" android:numColumns="@integer/column_number"/>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/icon" android:layout_width="66dp" android:layout_height="66dp"
    android:scaleType="centerCrop"/>


这些更改可能不会立即解决您的问题,但它们会使您的工作更易于管理。

选中的
CENTER\u-CROP
没有帮助,进行任何更改您是否可以提供导致问题的图像的链接?添加到后检查
CENTER\u-CROP
的图像没有帮助,进行任何更改您是否可能提供导致问题的图像的链接?图像添加到帖子您使用什么代码加载图像?添加下面的代码,使用适配器加载图像?添加下面的代码,使用适配器加载图像?添加下面的代码,使用适配器Anyway列数不基于屏幕宽度设置,列数来自不同的来源,
GridView
位于
LinearLayout
中,通常比屏幕宽得多。移除android:gravity=“center”无效。需要
LinearLayout
因为要水平滚动
GridView
@János好的,如果它来自其他地方,你可以调用
GridView.setNumColumns()
,如果你设置
android:layout\u width=“wrap\u content”
GridView可以垂直滚动,你不需要任何其他代码,但我想水平滚动以及。所以我把它放到了一个
线性布局中。而
GridView
可以有上百个列。@János你不需要
LinearLayout
这样做,只要所有列的宽度大于视图的宽度,
GridView
就可以水平滚动。我不能水平滚动,做了一个POC,具有较高的
列宽度
numColumns
但图像只是相互重叠,但无法滚动。列数不基于屏幕宽度设置,列数来自不同来源,
GridView
位于
线性布局
通常比屏幕宽得多。移除android:gravity=“center”
无效。需要
LinearLayout
因为要水平滚动
GridView
@János好的,如果它来自其他地方,您可以调用
GridView.setNumColumns()
,如果设置