思路:

GridView行数设置为一行,外面套一个HorizontalScrollView,代码中设置GridView宽度

xml代码

<HorizontalScrollView
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:scrollbars="none" > <LinearLayout
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:orientation="horizontal" >   <GridView
     android:id="@+id/gv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >
  </GridView>
</LinearLayout>
</HorizontalScrollView>

代码中设置

    // 得到像素密度
DisplayMetrics outMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay()
.getMetrics(outMetrics);
float density = outMetrics.density; // 像素密度
ViewGroup.LayoutParams params = gridView.getLayoutParams();
int itemWidth = (int) (100 * density);// 默认item宽度为100
int spacingWidth = (int) (5 * density);
params.width = (itemWidth + spacingWidth) * childCount + spacingWidth;
gridView.setStretchMode(GridView.NO_STRETCH); // 设置为禁止拉伸模式
gridView.setNumColumns(childCount);
gridView.setHorizontalSpacing(spacingWidth);
gridView.setColumnWidth(itemWidth);
gridView.setLayoutParams(params);
05-11 16:23