Android GridView顯示一行,左右滑動

最近項目需要用到這個功能,研究瞭一下,實現過程如下:

gridViewAdapter = new GridViewAdapter(mContext, list1);

[java]  

ViewGroup.LayoutParams params = gridview.getLayoutParams();  

params.width = DensityUtil.dip2px(mContext, 101) * list1.size();  

gridview.setLayoutParams(params);  

gridview.setNumColumns(list1.size());  

gridview.setAdapter(gridViewAdapter);  

 

gridViewAdapter是自定義的一個adapter,gridview即需要顯示的Gridview,list1為數據源。

DensityUtil代碼如下:

[java]  

public class DensityUtil {    

    /**  

     * 根據手機的分辨率從 dp 的單位 轉成為 px(像素)  

     */    

    public static int dip2px(Context context, float dpValue) {    

        final float scale = context.getResources().getDisplayMetrics().density;    

        return (int) (dpValue * scale + 0.5f);    

    }    

    

    /**  

     * 根據手機的分辨率從 px(像素) 的單位 轉成為 dp  

     */    

    public static int px2dip(Context context, float pxValue) {    

        final float scale = context.getResources().getDisplayMetrics().density;    

        return (int) (pxValue / scale + 0.5f);    

    }    

}  

layout裡定義Gridview:

[html 

<HorizontalScrollView  

               android:layout_width="match_parent"  

               android:layout_height="wrap_content"  

               android:scrollbars="none"  

               android:layout_marginTop="@dimen/normalPadding" >  

  

               <LinearLayout  

                   android:id="@+id/liear"  

                   android:layout_width="wrap_content"  

                   android:layout_height="wrap_content"  

                   android:orientation="horizontal">  

  

                   <GridView  

                       android:id="@+id/gridview"  

                       android:layout_width="match_parent"  

                       android:layout_height="match_parent"  

                       android:cacheColorHint="#00000000"  

                       android:columnWidth="100dp"  

                       android:gravity="center"  

                       android:horizontalSpacing="1.0dip"  

                       android:listSelector="#00000000"  

                       android:numColumns="auto_fit"  

                       android:stretchMode="spacingWidthUniform"  

                       android:verticalSpacing="1.0dip" />  

               </LinearLayout>  

           </HorizontalScrollView>  

 

GridView的樣式gridview_item.xml:

[html] 

<?xml version="1.0" encoding="utf-8"?>  

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"  

    android:layout_width="fill_parent"  

    android:layout_height="fill_parent"  

    android:padding="3dp" >  

  

    <ImageView  

        android:id="@+id/ImageIcon"  

        android:layout_width="100dp"  

        android:layout_height="90dp"  

        android:src="@drawable/card_detaild_small"  

        android:scaleType="fitXY" />  

  

</RelativeLayout>  

 

註意:代碼裡給的寬度比gridview_item.xml的寬度多1,即101,這樣顯示比較好看一下,不會因為過窄而顯示不全。

發佈留言