android开发 横向gridview,Android应用开发之Android GridView实现横向列表水平滚动

本文将带你了解Android应用开发Android GridView实现横向列表水平滚动,希望本文对大家学Android有所帮助。

本文实例为大家分享了Android   GridView实现横向列表水平滚动的具体代码,供大家参考,具体内容如下

有时候根据项目需要,使用可横向滑动的GridView。仅以该文记录一下,毕竟没什么技术含量。

1.主界面布局代码:activity_main.xml。设置android:numColumns=”auto_fit”是因为可以不定项的添加子项。

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical">

android:layout_width="fill_parent"

android:layout_height="wrap_content">

android:layout_width="wrap_content"

android:layout_height="fill_parent">

android:id="@+id/id_gridview_home"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center"

android:numColumns="auto_fit"

android:scrollbars="none"

android:stretchMode="spacingWidthUniform"/>

2.主界面GridView列表子项布局文件:home_gridview_item.xml

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_margin="0dp"

android:background="#ffffff"

android:orientation="vertical">

android:id="@+id/id_iv_item"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="10dp"

android:gravity="center"   />

android:id="@+id/id_tv_item"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal"

android:layout_marginTop="5dp"

android:gravity="center"

android:paddingBottom="10dp"

android:text="标题文字"

android:textSize="12sp" />

3.java实现代码:MainActivity.java

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.DisplayMetrics;

import android.widget.GridView;

import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

AblGridView id_gridview_home;

private int[]   imgs = {R.mipmap.index1_nav_xc,   R.mipmap.index1_nav_xc,

R.mipmap.index1_nav_xc,   R.mipmap.index1_nav_xc, R.mipmap.index1_nav_xc};

private String[] titles = new String[]{"子项1", "子项2","子项3","子项4", "子项5"};

@Override

protected void onCreate(Bundle savedInstanceState)   {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

id_gridview_home= (AblGridView)   findViewById(R.id.id_gridview_home);

setGridView();

}

/**设置GirdView参数,绑定数据*/

private void setGridView() {

int size = imgs.length;

int length = 100;

DisplayMetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

float density = dm.density;

int gridviewWidth = (int)   (size * (length + 4) *   density);

int itemWidth = (int)   (length * density);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(

gridviewWidth,   LinearLayout.LayoutParams.FILL_PARENT);

id_gridview_home.setLayoutParams(params);   //   设置GirdView布局参数,横向布局的关键

id_gridview_home.setColumnWidth(itemWidth);   //   设置列表项宽

id_gridview_home.setHorizontalSpacing(5); //   设置列表项水平间距

id_gridview_home.setStretchMode(GridView.NO_STRETCH);

id_gridview_home.setNumColumns(size); // 设置列数量=列表集合数

AblGridViewBaseAdapter adapter = new AblGridViewBaseAdapter(this,imgs,titles);

id_gridview_home.setAdapter(adapter);

}

}

4.自定义控件:AblGridView

import android.content.Context;

import android.util.AttributeSet;

import android.widget.GridView;

/**

* 继承GridView控件,为了更友好的显示

*   解决在scrollview中只显示第一行数据的问题

*/

public class AblGridView extends GridView {

public AblGridView(Context context, AttributeSet attrs)   {

super(context, attrs);

}

public   AblGridView(Context context)   {

super(context);

}

public AblGridView(Context context, AttributeSet   attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE   >> 2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec,   expandSpec);

}

}

5.重写适配器:AblGridViewBaseAdapter

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值