? ? 對于橫向的GridView券坞,很多人會說鬓催,沒必要,用RecycleView就可以完成恨锚,但是宇驾,我就喜歡搞點特別的,因此當初就寫了個橫向的GridView猴伶。網上的東西大部分都有很多其它的東西课舍,比如你要找一個功能菌瘫,它會給你十個,然后你要去改布卡,還不如自己寫出來。雇盖。我的原則就是一切以簡單為主忿等。
主要代碼:
DisplayMetrics dm =newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
floatdensity?=?dm.density;
intgridviewWidth?=?(int)?(size?*?(length)?*?density);
intitemWidth?=?(int)?(length?*?density);
LinearLayout.LayoutParams?params?=newLinearLayout.LayoutParams(
gridviewWidth,?LinearLayout.LayoutParams.MATCH_PARENT);
mygridview.setLayoutParams(params);//?設置GirdView布局參數(shù),橫向布局的關鍵
mygridview.setColumnWidth(itemWidth);//?設置列表項寬
//????????gridsetRankPotentialActorGridViewView.setHorizontalSpacing(20);?//?設置列表項水平間距
mygridview.setStretchMode(GridView.NO_STRETCH);
mygridview.setNumColumns(size);//?設置列數(shù)量=列表集合數(shù)
xml布局主要代碼:
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginBottom="10dp">
android:id="@+id/mygridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:numColumns="auto_fit"
android:scrollbars="none"
android:stretchMode="spacingWidthUniform"/>
package demo.leo.com.horizontalgridview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* Created by Leo on 2017/1/20.
*/
public class MyGridView extends GridView {
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = widthMeasureSpec;
super.onMeasure(expandSpec, heightMeasureSpec);
}
}
packagedemo.leo.com.horizontalgridview;
importandroid.content.Context;
importandroid.view.View;
importandroid.widget.ImageView;
importandroid.widget.TextView;
importjava.util.HashMap;
importjava.util.Map;
/**
* Created by Leo on 2017/1/20.
*/
publicclassViewHolder{
publicViewconvertView;
publicstaticViewHoldergetVH(ViewconvertView,Contextcontent,intlayout)
{
if(convertView==null){
convertView=View.inflate(content,layout,null);
}
ViewHolderholder=newViewHolder(convertView);
returnholder;
}
//? ? ImageView singlenews_iv;
//? ? TextView? title_tv;
//? ? TextView? time_tv;
publicMapmaps=newHashMap();
publicViewHolder(ViewconvertView)
{
this.convertView=convertView;
}
publicTgetView(intid)
{
if(maps.get(id)==null)
{
maps.put(id,convertView.findViewById(id));
}
return(T)maps.get(id);
}
publicTgetView(intid,Classclazz)
{
returngetView(id);
}
publicTextViewgetTv(intid)
{
returngetView(id,TextView.class);
}
publicImageViewgetIv(intid)
{
returngetView(id,ImageView.class);
}
}
csdn項目地址:http://blog.csdn.net/greatdaocaoren/article/details/54630266