请参阅随附的屏幕截图,我试图减少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>
我在Bitmap中创建了我的代码中的ImageViews。但是,我没有指定任何填充或间距或其他。
如何减少列之间的空间?我在GridViews和ImageViews上尝试了各种设置,但没有运气
图片为:
由于
答案 0 :(得分:23)
尝试修复网格的xml文件中所需的列数,并将stretchMode设置为columnwidth
android:numColumns="3"
android:columnWidth="60dp"
android:stretchMode="columnWidth"
或在xml中为网格
设置水平和垂直间距android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
答案 1 :(得分:11)
删除重力属性并使用以下模式
android:stretchMode="NONE"
答案 2 :(得分:4)
列之间的空格是因为gridview元素没有完全占据网格视图提供的列空间。
删除列之间空间的解决方案是测量设备的屏幕宽度和高度,并将其除以列数和行数。这将给出每个网格视图元素的宽度和高度。
您必须将此高度和宽度指定给imageview,并缩放位图以匹配图像视图。
代码:
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
答案 3 :(得分:3)
嗨,我遇到了mygridView.setStretchMode(GridView.NO_STRETCH);
答案 4 :(得分:1)
我遇到类似的问题,即在少数设备的列之间有轻微的水平间距。 (我没需要任何空间。)我通过将网格项宽度除以总宽度来正确计算它。我只在联想设备上遇到此问题。
以下代码处于与网格相关的活动中。
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"
/>
更改拉伸模式值后,我无法解决问题。
但是在GridView的布局xml中跟随值可以解决这个问题。
android:horizontalSpacing="0dp"
我希望,像我这样的人可能会觉得这很有帮助。
问候。
答案 5 :(得分:1)
我遇到了同样的问题。我通过这样做最小化了列空间
for gridView
public function add() {
if ($this->request->is('post')) {
$this->User->create();
if ($this->User->saveAll($this->request->data)) {
$components = array('Session');
$this->Session->setFlash('Welcome !');
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(
__('The user could not be saved. Please, try again.')
);
}
}
for imageView
android:numColumns="2"
android:columnWidth="90dp"
android:verticalSpacing="0dp"
android:horizontalSpacing="-30dp"
android:stretchMode="columnWidth"
答案 6 :(得分:0)
你可以通过设置android:horizontalSpacing =&#34; -10dp&#34;来减少空间b / w列。 (一些负数)