以上是需求效果的图片,两行GridView 横向滑动。
在XML布局里加上HorizontalScrollView控件。XML代码如下:
<HorizontalScrollView
android:foregroundGravity="center"
android:layout_marginStart="20dp"
android:layout_marginTop="50dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="50dp"
android:layout_toRightOf="@+id/xmly_ysdw"
android:scrollbars="none"
android:id="@+id/xmly_user_photo"
android:layout_width="400dp"
android:layout_height="wrap_content">
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<GridView
android:layout_gravity="center"
android:numColumns="3"
android:horizontalSpacing="14dp"
android:verticalSpacing="9dp"
android:id="@+id/xmly_gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnWidth="81dp">
</GridView>
</LinearLayout>
</HorizontalScrollView>
Activity 中:
public class XmlyActivity extends AppCompatActivity {
DisplayMetrics dm;
private int NUM =4;//每行显示个数
private int hSpacing = 20; //水平间距
private GridView gridView;
private ArrayList<MeAlbums> mlist;
private ArrayList<Integer> alist;
private GridViewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xmly);
gridView = (GridView) findViewById(R.id.xmly_gridview);
setData();
setGridView();
}
private void setData(){
mlist = new ArrayList<MeAlbums>();
alist = new ArrayList<Integer>();
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
alist.add(R.mipmap.demo);
}
private void setGridView(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float density = dm.density;
adapter = new GridViewAdapter(this,alist);
int count = adapter.getCount();
int columns = (count % 2 == 0) ? count / 2 : count / 2 + 1;
gridView.setAdapter(adapter);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(columns * (dm.widthPixels-150) / NUM,
LinearLayout.LayoutParams.MATCH_PARENT);
gridView.setLayoutParams(params);
gridView.setColumnWidth((dm.widthPixels-300) / NUM );
gridView.setStretchMode(GridView.NO_STRETCH);
if (count <= 3) {
gridView.setNumColumns(count);
} else {
gridView.setNumColumns(columns);
}
}
}
横向右拉刷新,左拉加载待更新。。。