效果图:

自定义两行可左右滑动的GridView自定义两行可左右滑动的GridView自定义两行可左右滑动的GridView

xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <HorizontalScrollView        android:id="@+id/scrollView"        android:layout_width="match_parent"        android:layout_height="match_parent" >        <LinearLayout            android:id="@+id/linearLayout1"            android:layout_width="wrap_content"            android:layout_height="wrap_content" >            <GridView                android:id="@+id/gridView1"                android:layout_width="match_parent"                android:layout_height="match_parent" >            </GridView>        </LinearLayout>    </HorizontalScrollView></LinearLayout>


Java:

public class MainActivity extends Activity {HorizontalScrollView horizontalScrollView;GridView gridView;DisplayMetrics dm;private int NUM = 4; // 每行显示个数private int hSpacing = 20;// 水平间距@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);horizontalScrollView = (HorizontalScrollView) findViewById(R.id.scrollView);gridView = (GridView) findViewById(R.id.gridView1);horizontalScrollView.setHorizontalScrollBarEnabled(false);// 隐藏滚动条getScreenDen();setValue();}private void setValue() {MyGridViewAdapter adapter = new MyGridViewAdapter(this, 21);int count = adapter.getCount();int columns = (count % 2 == 0) ? count / 2 : count / 2 + 1;gridView.setAdapter(adapter);LayoutParams params = new LayoutParams(columns * dm.widthPixels / NUM,LayoutParams.WRAP_CONTENT);gridView.setLayoutParams(params);gridView.setColumnWidth(dm.widthPixels / NUM);// gridView.setHorizontalSpacing(hSpacing);gridView.setStretchMode(GridView.NO_STRETCH);if (count <= 3) {gridView.setNumColumns(count);} else {gridView.setNumColumns(columns);}}private void getScreenDen() {dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

源码地址:点击这里

更多相关文章

  1. ListView 可以滑动的上下间距
  2. android字间距实现,textview字间距实现
  3. 今天和大家讲一下怎么样简单的把壁纸作为背景,在中间加一个textvi
  4. Android9.0 修改状态栏图标之间的间距
  5. Tablayout属性以及设置行间距和列间距
  6. android textview设置字体的行距和字间距
  7. android中checkbox文字和复选框的间距设置问题

随机推荐

  1. android开发中英文切换
  2. Android(安卓)音视频开发(四) -- CameraX
  3. adb命令——初始环境安装
  4. android studio中直接运行java程序
  5. Android多Module下的Application引用方式
  6. Android(安卓)Bitmap垂直翻转
  7. android4.3 截屏功能的尝试与失败分析
  8. Android命令行编译方法,不用Eclipse IDE
  9. Android中数据存储方式一:文件形式
  10. android开发-界面设计基本知识Ⅲ