Android使用Gridview单行横向滚动显示
作者:风吹起如花般细碎流年 发布时间:2021-07-28 17:40:43
标签:Android,Gridview,滚动
本文实例为大家分享了Android使用Gridview单行横向滚动显示的具体代码,供大家参考,具体内容如下
要想实现滚动显示,layout布局里必须要使用HorizontalScrollView,才能实现横向滑动,但HorizontalScrollView标签里要嵌套一个LinearLayout布局
activity_main.xml,如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:weightSum="2" >
<HorizontalScrollView
android:id="@+id/horizontal_scrollview"
android:layout_height="0dp"
android:layout_width="fill_parent"
android:layout_weight="1"
android:layout_gravity="center"
android:background="@android:color/darker_gray"
android:scrollbars="none">
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="horizontal">
<GridView
android:id="@+id/test_gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
gridview中的item的布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="80dp"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/item_img"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:background="#00000000"/>
<TextView
android:id="@+id/item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="20dp"
android:text="233"
android:textColor="@android:color/white"/>
</LinearLayout>
实现类如下:
package com.example.scrollgridview;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
private GridView gridview;
private int imgs[]={R.drawable.remote_tv_0,
R.drawable.remote_tv_1,R.drawable.remote_tv_2,
R.drawable.remote_tv_3,R.drawable.remote_tv_4,
R.drawable.remote_tv_5,R.drawable.remote_tv_6,
R.drawable.remote_tv_7,R.drawable.remote_tv_8,
R.drawable.remote_tv_9};
private GridviewAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridview = (GridView)findViewById(R.id.test_gridview);
adapter = new GridviewAdapter();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float density = dm.density;
int size = imgs.length;//要显示数据的个数
//gridview的layout_widht,要比每个item的宽度多出2个像素,解决不能完全显示item的问题
int allWidth = (int) (82 * size * density);
//int allWidth = (int) ((width / 3 ) * size + (size-1)*3);//也可以这样使用,item的总的width加上horizontalspacing
int itemWidth = (int) (80 * density);//每个item宽度
LinearLayout.LayoutParams params = new
LinearLayout.LayoutParams(allWidth,LinearLayout.LayoutParams.MATCH_PARENT);
gridview.setLayoutParams(params);
gridview.setColumnWidth(itemWidth);
gridview.setHorizontalSpacing(3);
gridview.setStretchMode(GridView.NO_STRETCH);
gridview.setNumColumns(size);
gridview.setAdapter(adapter);
adapter.setindex(0);
adapter.notifyDataSetChanged();
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
adapter.setindex(position);
adapter.notifyDataSetChanged();
}
});
}
class GridviewAdapter extends BaseAdapter{
private int index = 0;
@Override
public int getCount() {
// TODO Auto-generated method stub
return imgs.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return imgs[position];
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public void setindex(int index){
this.index = index;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewHolder viewHolder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.gridview_itme, null);
viewHolder = new ViewHolder();
viewHolder.img = (ImageView)convertView.findViewById(R.id.item_img);
viewHolder.text = (TextView)convertView.findViewById(R.id.item_text);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
if(this.index == position){
convertView.setBackgroundResource(R.drawable.list_item_bg_focus);
}
else{
convertView.setBackgroundResource(R.drawable.list_item_bg);
}
viewHolder.img.setImageResource(imgs[position]);
viewHolder.text.setText(position+"");
return convertView;
}
class ViewHolder{
ImageView img;
TextView text;
}
}
}
代码下载地址:AndroidGridviewScroll(jb51.net).rar
来源:https://blog.csdn.net/gaoxiaomin123456/article/details/49616109


猜你喜欢
- 我就废话不多说了,大家还是直接看代码吧~<!-- 查询物品的id --><select id="checkIte
- 前言请看下面几个问题Spring为什么不推荐使用@Autowired 注解?为什么推荐使用@Resource 代替&nb
- 此方法是通过view的方式获取当前activity的屏幕截图,并不是framebuffer的方式,所以有一定的局限性。但是这种方法相对简单,
- 一.背景项目中有个需求大体意思是,上传一个word模板,根据word模板合成word文件,再将word文件转为pdf。二.方案选择1.Spi
- 这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较
- 1、引出安卓初学者一般在写android Activity的时候总是会在onCreate方法中加上setContentView方法来加载la
- 本文实例为大家分享了Android实现欢迎滑动页面的具体代码,供大家参考,具体内容如下一、效果图二、源码1.activity_welcome
- 1、多态性多态性是面向对象的最后一个特征,它本身主要分为两个方面: 方法的多态性:重载与覆写1、重载:同一个方法名称,根据参数类型以及个数完
- 1,在项目上鼠标右键 --> Open Module Settings2, Artifacts --> + --> JAR
- 看了网上关于记事本的查找替换很多,但都没有达到我想要的结果,然后自己学习总结了以下的方法:统计字符串(汉字,字母,数字,字符)先上效果图定义
- 现在基于SpringCloud的微服务开发日益流行,网上各种开源项目层出不穷。我们在实际工作中可以参考开源项目实现很多开箱即用的功能,但是必
- 在上一讲中 OkHttp下载文件并带进度条 中,我们知道怎样去下载文件了。那上传文件呢一、编写服务器端在上一讲服务器下新建UploadFil
- (一)首先说Unity调用页面方法的办法。首先是需要在工程的Asset目录里面建一个Plugins文件夹,然后在文件夹里面创建一个.txt文
- Guava Cache:⾕歌开源缓存框架Guava Cache是在内存中缓存数据,相比较于数据库或redis存储,访问内存中的数据会更加高效
- 本文实例为大家分享了Java使用组件编写窗口下载网上文件的具体代码,供大家参考,具体内容如下如图实现代码:package com.rain.
- 一、实现效果本篇文章实现了简单的图片轮播,初始化3张资源图片,初始化3秒更换一次图片背景,轮换播放。二、知识点Thread线程start()
- 一、简介众所周知,值类型变量不能null,这也是为什么它们被称为值类型。但是,在实际的开发过程中,也需要值为null的一些场景。例如以下场景
- 本文实例为大家分享了百度人脸识别之人脸识别FaceIdentify,供大家参考,具体内容如下using System.Collections
- 编译Android系统APK1、设置环境export ANDROID_HOME=/home/administrator/soft/andro
- 一、概述简单理解为 异步消息插队并优先执行。场景:排队买票先来了一个普通用户来排队,买完票走了。后面又来了一个VIP用户A来买票 就一直站在