Android:水平中心gridview

前端之家收集整理的这篇文章主要介绍了Android:水平中心gridview前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要在我的 Android layout.xml中水平地对齐网格视图.我已经搜索google了很长一段时间,但没有成功找到答案.

我只能通过改变strechMode来改变gridview水平位置,但是我的项目不是靠近的.
我需要的是物品是一个靠近另一个(没有空格)并且水平居中.我选择strechmode = none,所以现在我的项目是彼此靠近,但它们在屏幕的左边,我只是希望他们水平居中.

这是我的布局xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent" 
          android:layout_height="fill_parent"
          android:background="@drawable/background" 
          android:gravity="center">

<GridView android:id="@+id/lw_gridview" 
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:numColumns="3" 
          android:columnWidth="48dp"
          android:horizontalSpacing="0dp"
          android:verticalSpacing="0dp"
          android:stretchMode="none"
          />


</LinearLayout>

这是由图像适配器在gridview上设置的图像的片段:

imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(48,48)); //on medium density
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setPadding(0,0);

我怎么能成功?

解决方法

我通过计算和设置其填充来手动对齐我的网格视图.这是我的onCreate所做的:

找出屏幕的宽度和屏幕密度
>将项目宽度和间距的常量值从DIP转换为像素
>计算我可以适合的列数.

方程式看起来像这样,numColumns是唯一的未知数:

numColumns * itemWidth(numColumns – 1)* spacingBetweenItems selectorPadding< = sreenWidth
>具有numColumns,计算我的网格视图实际需要多少水平空间
>具有网格视图的实际宽度,设置填充,使其最终在屏幕的中心

好的,这里有一些代码

// Convert DIPs to pixels
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
mSizePx = (int) Math.floor(SIZE_DIP * metrics.scaledDensity);
mSpacingPx = (int) Math.floor(SPACING_DIP * metrics.scaledDensity);

GridView gridview = (GridView) findViewById(R.id.gridview);
// Find out the extra space gridview uses for selector on its sides.
Rect p = new Rect();
gridview.getSelector().getPadding(p);
int selectorPadding = p.left + p.right;

// Determine the number of columns we can fit,given screen width,// thumbnail width,and spacing between thumbnails.
int numColumns = (int) Math.floor(1f * (metrics.widthPixels - selectorPadding + mSpacingPx)
        / (mSizePx + mSpacingPx));

int contentWidth = numColumns * mSizePx; // Width of items
contentWidth += (numColumns - 1) * mSpacingPx; // Plus spaces between items
contentWidth += selectorPadding; // Plus extra space for selector on sides

// Now calculate amount of left and right margin so the grid gets
// centered. This is what we
// unfortunately cannot do with layout_width="wrap_content"
// and layout_gravity="center_horizontal"
int slack = metrics.widthPixels - contentWidth;

gridview.setNumColumns(numColumns);
gridview.setPadding(slack / 2,slack / 2,slack / 2);
原文链接:https://www.f2er.com/android/312696.html

猜你在找的Android相关文章