Android 将栅格视图与其他视图对齐
我有一个Android 将栅格视图与其他视图对齐,android,gridview,Android,Gridview,我有一个图像视图。在它下面,我想有一个GridView包含许多较小的图像。我希望它看起来整洁。。。每行4个,顶部和底部间隔均匀 目前,间距还不算太差(尽管在我看来,从左到右的间距看起来比从上到下的间距要小一些),但我真正需要解决的是最右边的额外边距 我希望网格视图中图像的右边缘与大图像的右边缘完美对齐。我做错了什么 以下是我目前拥有的图像: 以下是我的布局: <LinearLayout android:layout_width="match_par
图像视图
。在它下面,我想有一个GridView
包含许多较小的图像。我希望它看起来整洁。。。每行4个,顶部和底部间隔均匀
目前,间距还不算太差(尽管在我看来,从左到右的间距看起来比从上到下的间距要小一些),但我真正需要解决的是最右边的额外边距
我希望网格视图中图像的右边缘与大图像的右边缘完美对齐。我做错了什么
以下是我目前拥有的图像:
以下是我的布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/items_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/placeholder"
android:scaleType="fitStart"
android:adjustViewBounds="true"
style="@style/ItemsImage" />
<GridView
android:id="@+id/items_all_images"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numColumns="4"
android:stretchMode="columnWidth"
android:clipToPadding="false"
android:scrollbarStyle="outsideOverlay"
android:verticalSpacing="20dp"
style="@style/ItemsImage"
/>
</LinearLayout>
</LinearLayout>
ItemsImage样式如下所示:
<style name="ItemsImage">
<item name="android:gravity">top|left</item>
<item name="android:layout_gravity">top|left</item>
<item name="android:paddingRight">25dp</item>
</style>
左上角
左上角
25dp
我不知道这是最好的方法,但它可以解决问题。
将以下行添加到活动的onCreate方法中:
YOUR_GRIDVIEW.post(new Runnable()
{
@Override
public void run(){
YOUR_GRIDVIEW.setWidth(YOUR_IMAGE.getWidth());
}
});
我不知道这是最好的方法,但它可以解决问题。 将以下行添加到活动的onCreate方法中:
YOUR_GRIDVIEW.post(new Runnable()
{
@Override
public void run(){
YOUR_GRIDVIEW.setWidth(YOUR_IMAGE.getWidth());
}
});
在gridView中为栅格和图像定义固定宽度和高度。在网格实例初始化后的代码中,可以如下设置间距
GridView gridView;
int gridWidth = 1280;
int gridHeight = 500;
int gridItemWidth = 60;
int gridItemHeight = 50;
int gridRows = 3, gridColumns = 4;
int vSpacing = (gridHeight - (gridItemHeight * gridRows))/gridRows;
int hSpacing = (gridWidth - (gridItemWidth * gridColumns))/gridColumns;
gridView.setLayoutParams(new LayoutParams(gridWidth, gridHeight));
gridView.setColumnWidth(gridItemWidth);
gridView.setNumColumns(gridColumns);
gridView.setHorizontalSpacing(hSpacing);
gridView.setVerticalSpacing(vSpacing);
将网格宽度设置为GridView上方大图像的大小。
希望对您有所帮助。在gridView中为网格和图像定义固定宽度和高度。在网格实例初始化后的代码中,可以如下设置间距
GridView gridView;
int gridWidth = 1280;
int gridHeight = 500;
int gridItemWidth = 60;
int gridItemHeight = 50;
int gridRows = 3, gridColumns = 4;
int vSpacing = (gridHeight - (gridItemHeight * gridRows))/gridRows;
int hSpacing = (gridWidth - (gridItemWidth * gridColumns))/gridColumns;
gridView.setLayoutParams(new LayoutParams(gridWidth, gridHeight));
gridView.setColumnWidth(gridItemWidth);
gridView.setNumColumns(gridColumns);
gridView.setHorizontalSpacing(hSpacing);
gridView.setVerticalSpacing(vSpacing);
将网格宽度设置为GridView上方大图像的大小。
希望能对你有所帮助。我觉得重心应该是对称空间的中心。谢谢你的回复。如果我这样做了,那么在最左边缘和最右边缘都有相同大小的多余空间。我希望边缘与上面的
ImageView
均匀排列。我明白了,您不需要提供正确的填充,在XML中,设置网格宽度以匹配父级。请您进一步解释,我不明白?您在屏幕右侧看到的空白实际上是您在您的样式中提供的25dp填充。设置宽度以匹配家长会占据整个屏幕。我觉得重心应该是对称的。谢谢你的回复。如果我这样做了,那么在最左边缘和最右边缘都有相同大小的多余空间。我希望边缘与上面的ImageView
均匀排列。我明白了,您不需要提供正确的填充,在XML中,设置网格宽度以匹配父级。请您进一步解释,我不明白?您在屏幕右侧看到的空白实际上是您在您的样式中提供的25dp填充。设置宽度以匹配父项将占据整个屏幕。GridView
没有setWidth()
功能吗?我明白了setColumnWidth@b85411然后使用setMinimumWidth方法老实说,我认为GridView的宽度没有问题。如果我给它一个黑色的背景,我可以看到它对齐。。。但是似乎在单个项目上有一些内部填充。GridView
没有setWidth()
函数?我明白了setColumnWidth@b85411然后使用setMinimumWidth方法老实说,我认为GridView的宽度没有问题。如果我给它一个黑色的背景,我可以看到它对齐。。。但似乎每个项目都有一些内部填充。