Android应用开发之Android GridView实现横向列表水平滚动
白羽 2019-01-03 来源 :网络 阅读 1653 评论 0

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

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


           

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

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

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


   

<?xml   version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="//schemas.android.com/apk/res/android"

 android:layout_width="fill_parent"

 android:layout_height="fill_parent"

 android:orientation="vertical">

 

 <HorizontalScrollView

  android:layout_width="fill_parent"

  android:layout_height="wrap_content">

 

  <LinearLayout

   android:layout_width="wrap_content"

   android:layout_height="fill_parent">

 

   <view.gridviewdemo.AblGridView

    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"/>

  </LinearLayout>

 </HorizontalScrollView>

 

</LinearLayout>

   

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


   

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="//schemas.android.com/apk/res/android"

 android:layout_width="match_parent"

 android:layout_height="wrap_content"

 android:layout_gravity="center"

 android:layout_margin="0dp"

 android:background="#ffffff"

 android:orientation="vertical">

 

 <ImageView

  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"   />

 

 <TextView

  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" />

</LinearLayout>

   

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频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程