Android GridView 多行 橫向滑動


 

以上是需求效果的圖片,兩行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);
}
}
}

橫向右拉刷新,左拉加載待更新。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM