android gridview横向显示图片,Android使用Gridview单行横向滚动显示

本文实例为大家分享了Android使用Gridview单行横向滚动显示的具体代码,供大家参考,具体内容如下

要想实现滚动显示,layout布局里必须要使用HorizontalScrollView,才能实现横向滑动,但HorizontalScrollView标签里要嵌套一个LinearLayout布局

activity_main.xml,如下:

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

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

android:layout_height="match_parent"

android:layout_width="match_parent"

android:orientation="horizontal">

android:id="@+id/test_gridview"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="center"/>

gridview中的item的布局如下:

android:layout_width="80dp"

android:layout_height="match_parent"

android:orientation="vertical" >

android:id="@+id/item_img"

android:layout_width="60dp"

android:layout_height="60dp"

android:layout_gravity="center_horizontal"

android:scaleType="fitXY"

android:background="#00000000"/>

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

实现类如下:

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;

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值