百度
360搜索
搜狗搜索

android gridview,android的:tableLayout和gridview有什么不同详细介绍

本文目录一览: Android开发中,加载本地文件夹下所有图片并显示在GridView中

这个工程相对复杂一点,一点一点来解释。

注意,这里的gridview一定要先设置好id以及列数。

在Activity中初始化,这个就简单了。

首先,我们写一个获取本地文件的帮助类。

此类中包含两个方法,第一个方法需要传入一个String类型的文件夹路径,会返回一个给定路径中图片的全名称(包括扩展名)。

第二个方法是用于过滤文件夹下的图片文件。

然后,在Activity中调用上面的方法,传入一个需要遍历的文件夹路径。

将返回的图片全名和给定的路径拼接成资源路径,放进一个String类型的数组里面。

首先,我们新建一个javaBean类,用于结构化我们获取的图片数据。

一个title,一个imageId。

然后,到了最关键的一步,重写适配器类。

构造方法里需要传入三个参数,titles数组,imageId数组,以及当前上下文。

当然,gridView的item布局文件我们不能忘记。

之后就是继承BaseAdapter,重写适配器了。

android ScrollVIew中嵌套GridView,如何显示GridView

在Android开发当中经常会用到了需要ScrollView嵌套GridView或者是ListView的情况,由于这两款控件都自带滚动条,当他们一起使用的时候就会出现GridView或ListView会显示不全的问题。
自定义MyGridView
public class MyGridView extends GridView {
public MyGridView(Context context) {
super(context);}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);}
public MyGridView(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);}}xml中的布局文件:
<com.xxx.mygridview
android:id=@+id/mygridview

android:layout_width=fill_parent

android:layout_height=wrap_content

android:gravity=center

android:horizontalSpacing=5dp

android:numColumns=4

android:stretchMode=columnWidth

android:verticalSpacing=6dp /

Java调用代码

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。

1.GridView常用的XML属性

属性名称 描述

android:columnWidth 设置列的宽度。

android:gravity 设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。

android:horizontalSpacing 两列之间的间距。

android:numColumns 设置列数。

android:stretchMode 缩放模式。

android:verticalSpacing 两行之间的间距。

2.实例1

main.xml

运行效果:

3.实例2

gridview.xml

grid_item.xml

运行效果图:

4.实例3

main.xml

picture_item.xml

效果图:

</com.xxx.mygridview

android gridview怎么做表格

功能:做表格,根据每个单元格的不同含义,给单元格设置不同的背景色;
实现:通过GridView结合BaseAdapter实现;
案例源码:
第一步,新建一个Android应用:BaseAdapterDemoActivity;
第二部,重写main.xml,如下:

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>


<gridview
android:id="@+id/gridview"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

第三步,在BaseAdapterDemoActivity.java文件中创建MyAdapter,基类是BaseAdapter,如下:

package hello.zcping.adapter;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.TextView;

public class BaseAdapterDemoActivity extends Activity {

private GridView mGridView;

private MyAdapter mMyAdapter;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

setupViews();

}

public void setupViews() {

mMyAdapter = new MyAdapter();

mGridView = (GridView) findViewById(R.id.gridview);

mGridView.setAdapter(mMyAdapter);

mGridView.setNumColumns(5);

}

private class MyAdapter extends BaseAdapter {

@Override

public int getCount() {

return 20;

}

@Override

public Object getItem(int arg0) {

return arg0;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

TextView mTextView = new TextView(getApplicationContext());

String[] abc = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",

"11", "12", "13", "14", "15", "16", "17", "18", "19", "20" };

int[] icolor = { Color.GRAY, Color.GREEN, Color.RED, Color.WHITE,

Color.YELLOW, Color.GRAY, Color.GREEN, Color.RED,

Color.WHITE, Color.YELLOW, Color.GRAY, Color.GREEN,

Color.RED, Color.WHITE, Color.YELLOW, Color.GRAY,

Color.GREEN, Color.RED, Color.WHITE, Color.YELLOW };

mTextView.setText(abc[position]);

mTextView.setTextColor(Color.BLACK);

mTextView.setBackgroundColor(icolor[position]);

return mTextView;

}

}

}

效果如下:

阅读更多 >>>  linux中怎么删除某个文件夹权限

android GridView 如何设置为左右可滚动?

上下空间大,还可以滚动,只要设置:mGridView .setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.e("onTouch", "MotionEvent.ACTION_MOVE"); return MotionEvent.ACTION_MOVE == event.getAction() ? true : false; } });这样,就不能上下滚动了
直接上代码
package com.example.horizontallistview;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
/***
*
* @author ymw
* @summary 博客地址欢迎访问: http://www.cnblogs.com/_ymw
*/
public class MainActivity extends Activity {
List

cityList;

RelativeLayout itmel;

GridView gridView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

LayoutInflater layoutInflater = (LayoutInflater) this

.getSystemService("layout_inflater");

gridView = (GridView) findViewById(R.id.grid);

setData();

setGridView();

}

/**设置数据*/

private void setData() {

cityList = new ArrayList

();

CityItem item = new CityItem();

item.setCityName("深圳");

item.setCityCode("0755");

cityList.add(item);

item = new CityItem();

item.setCityName("上海");

item.setCityCode("021");

cityList.add(item);

item = new CityItem();

item.setCityName("广州");

item.setCityCode("020");

cityList.add(item);

item = new CityItem();

item.setCityName("北京");

item.setCityCode("010");

cityList.add(item);

item = new CityItem();

item.setCityName("武汉");

item.setCityCode("027");

cityList.add(item);

item = new CityItem();

item.setCityName("孝感");

item.setCityCode("0712");

cityList.add(item);

cityList.addAll(cityList);

}

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

private void setGridView() {

int size = cityList.size();

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);

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

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

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

gridView.setStretchMode(GridView.NO_STRETCH);

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

GridViewAdapter adapter = new GridViewAdapter(getApplicationContext(),

cityList);

gridView.setAdapter(adapter);

}

/**GirdView 数据适配器*/

public class GridViewAdapter extends BaseAdapter {

Context context;

List

list;

public GridViewAdapter(Context _context, List

_list) {

this.list = _list;

this.context = _context;

}

@Override

public int getCount() {

return list.size();

}

@Override

public Object getItem(int position) {

return list.get(position);

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater layoutInflater = LayoutInflater.from(context);

convertView = layoutInflater.inflate(R.layout.list_item, null);

TextView tvCity = (TextView) convertView.findViewById(R.id.tvCity);

TextView tvCode = (TextView) convertView.findViewById(R.id.tvCode);

CityItem city = list.get(position);

tvCity.setText(city.getCityName());

tvCode.setText(city.getCityCode());

return convertView;

}

}

public class CityItem {

private String cityName;

private String cityCode;

public String getCityName() {

return cityName;

}

public void setCityName(String cityName) {

this.cityName = cityName;

}

public String getCityCode() {

return cityCode;

}

public void setCityCode(String cityCode) {

this.cityCode = cityCode;

}

}

}

学习了,不过左右滚动,上下的空间好大,不知道怎么控制。

GridView不支持左右滚动。

左右滚动的需求可考虑:

在外层加一个HorizontalScrollView, 不过这种滑动体验并不好,上下左右均可滑动,如果是斜着滑的时候,体验差。当然,如果你会自定义HorizontalScrollView把滑动区分为斜着上下滑和斜着左右滑,再把斜着上下滑的事件传递给子View也是可以的。

可以考虑Viewpager里加载多个GridView,这样GridView就可以一页一页的滑

阅读更多 >>>  手机qq短视频保存在哪里

怎样动态设置GridView的宽和高(Android)

LinearLayout.LayoutParams linearParams2 = (LinearLayout.LayoutParams)liveGrid.getLayoutParams();
linearParams2.width=(shipin_Adapter.getCount())*(cWidth+hSpacing);
linearParams2.height=cHight;
liveGrid.setLayoutParams(linearParams2);
  以下两种方式都可以做到:
  一、在xml布局文件中设置,wrap_content即表示根据gridView的内容自使用宽高,代码如下:
android:layout_width="wrap_content" android:layout_height="wrap_content"  二、在代码中动态设置,可以在对gridview赋值之后,计算gridview的宽高,然后进行设置:
int height = 20;//此处的高度需要动态计算 int width = 30;//此处的宽度需要动态计算 LinearLayout.LayoutParams linearParams =new LayoutParams(width, height);gridview.setLayoutParams(linearParams); //使设置好的布局参数应用到控件
  需要注意的是:如果你的gridview是嵌套在ScrollView中,那么,你需要重写gridview控件,不然gridview只显示一行的问题(即高度不够),具体重写方式,可以参考下面代码:
/** * @author hnbcinfo * 自定义GridView控件,解决在ListView 或ScrollView中使用GridView导致GridView显示不全的问题 * 当前应用:时间轴中,图片显示 */public class GridViewForScrollView extends GridView { public GridViewForScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public GridViewForScrollView(Context context) { super(context); } public GridViewForScrollView(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); } }

为什么android gridview只能显示一行数据

  因为在Android中,有这样一个限制,两ScrollView型的控件不能相互嵌套。像ListView和GridView就都是ScrollView型的控件。因为嵌套后,两个ScrollView型控件的滑动效果就丧失了,同时被嵌套控件的高度也被限定为一行的高度。那我们还能不能嵌套两个ScrollView型的控件呢?肯定是可以的。方法有两种:一是我们去需要自定义ListView或是GridView,并重写其onMeasure()方法。如下:
  public class NoScrollGridView extends GridView {
  public NoScrollGridView(Context context) {
  super(context);
  }
  public NoScrollGridView(Context context, AttributeSet attrs) {
  super(context, attrs);
  }
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);
  super.onMeasure(widthMeasureSpec, expandSpec);
  }
  }
  ListView也同理。
  还有一种方法是我们重新动态地计算我们现在需要的高度。在我们调用Adapter的时候,我们获得现在这个时候的GridView有多少个,单个GridView的高度,然后计算总高度。具体代码如下:
  /**
  * 重新计算listView高度
  * @param listView
  */
  public static void setListViewHeightBasedOnChildren(ListView listView) {
  // 获取ListView对应的Adapter
  ListAdapter listAdapter = listView.getAdapter();
  if (listAdapter == null) {
  return;
  }
  int totalHeight = 0;
  for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目
  View listItem = listAdapter.getView(i, null, listView);
  listItem.measure(0, 0); // 计算子项View 的宽高
  totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
  }
  ViewGroup.LayoutParams params = listView.getLayoutParams();
  params.height = totalHeight
  + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
  // listView.getDividerHeight()获取子项间分隔符占用的高度
  // params.height最后得到整个ListView完整显示需要的高度
  listView.setLayoutParams(params);
  }
  在我们setAdapter()的之前,我们调用上面的方法,如setListViewHeightBasedOnChildren(accomplishmentStateListView);
  因为我是在ListView中嵌套GridView,所以重新计算GridView的总高度的时候,要放在setAdapter(...GridViewAdapter)这个BaseAdapter的衍生类里。代码如下:
  /**
  * 计算gridview高度
  * @param gridView
  */
  public static void setGridViewHeightBasedOnChildren(GridView gridView) {
  // 获取GridView对应的Adapter
  ListAdapter listAdapter = gridView.getAdapter();
  if (listAdapter == null) {
  return;
  }
  int rows;
  int columns = 0;
  int horizontalBorderHeight = 0;
  Class
clazz = gridView.getClass();
  try {
  // 利用反射,取得每行显示的个数
  Field column = clazz.getDeclaredField("mRequestedNumColumns");
  column.setAccessible(true);
  columns = (Integer) column.get(gridView);
  // 利用反射,取得横向分割线高度
  Field horizontalSpacing = clazz
  .getDeclaredField("mRequestedHorizontalSpacing");
  horizontalSpacing.setAccessible(true);
  horizontalBorderHeight = (Integer) horizontalSpacing.get(gridView);
  } catch (Exception e) {
  // TODO: handle exception
  e.printStackTrace();
  }
  // 判断数据总数除以每行个数是否整除。不能整除代表有多余,需要加一行
  if (listAdapter.getCount() % columns > 0) {
  rows = listAdapter.getCount() / columns + 1;
  } else {
  rows = listAdapter.getCount() / columns;
  }
  int totalHeight = 0;
  for (int i = 0; i < rows; i++) { // 只计算每项高度*行数
  View listItem = listAdapter.getView(i, null, gridView);
  listItem.measure(0, 0); // 计算子项View 的宽高
  totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
  }
  ViewGroup.LayoutParams params = gridView.getLayoutParams();
  params.height = totalHeight + horizontalBorderHeight * (rows - 1);// 最后加上分割线总高度
  gridView.setLayoutParams(params);
  }
  这样我们就可以在ListView中添加GridView了。。。
  注:两个SrcollView型的控件可以是:
  

阅读更多 >>>  360downloads是什么文件夹

;

  

;

  

;

  

;

  

;

  

;

  

;

  

;

  

;

  ... ...

android的:tableLayout和gridview有什么不同

tablelayout是表格布局,表是一行行的,在tablerow里边写多少东西,这一行就有多少东西,但是每行不一定非要相同;但是gridview是网格,每行有几个是自己定义了,一旦定义好了以后,每行的内容及数量一定相等;而且gridview可以看到线条,但是tablelayout不会,没有线条
我来补充:tablelayout是个布局(继承ViewGroup),可以在里面放View。
gridview是继承AbsListView的,和ListView很像,理解成是个View就行了。
tableLayout是表格布局,用的比较少,实现如下图所示效果
注:TableLayout用的比较少,目前android support v7里面有一个gridlayout,它比TabLayout更容易使用,使用更强大,可以试试
GridView 实现网格布局,比如android手机桌面应用程序的排列,就可以用GridView来实现,具体效果如下:

android的gridview 怎么控制其高度

这个有两种方式:
1.layout 布局文件中设置


android:layout_height = "20dp"
2.继承GridView,重写onMeasure方法
经典例子 http://blog.chengyunfeng.com/?p=444
就你这个问题,我专门研究了下,呵呵,共同学习嘛
在Gridview的java文件中有个SimpleAdapter吧,里面有个界面布局文件,比如cell.xml,改一下里面的值,同时main.xml中的android:horizontalSpacing 的值改下,看效果。如果解决了,有更好的办法,记得也告诉我一声哈,共同学习,嘻嘻~
1,控制其控件的总体高度,可以通过布局直接设置layout_height,也可以动态赋值给他,但我相信楼主问的不是这个。
2,控制每个单元的高度。由于gridview没有直接set单元高度的函数,而gridview是根据adapter动态生成的,所以一般在adapter的getView方法中得到(该方法返回的View的高度),在这里处理即可。

如何实现android中横向滚动的gridView

法1.直接用tablelayout gridview是根据你每行的单元数自动生成的行数;
法2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
法1.直接用tablelayout gridview是根据你每行的单元数自动生成的行数;
法2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
1.直接用tablelayout gridview是根据每行的单元数自动生成的行数;
2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
1、动态布局,用横向的scrollview来代替https://github.com/zhilaizhang/Horizontalscrollview
2、动态布局,用横向的Listview来代替
https://github.com/kk-java/HorizontalListView
3、直接使用自定义组件
https://github.com/yinglovezhuzhu/HorizontalGridView
(链接中为github工程,可以自己下载下来学习。)
你可以去看看这个 http://www.cnblogs.com/_ymw/p/4147163.html
法1.直接用tablelayout gridview是根据你每行的单元数自动生成的行数;
法2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!

如何设置 android gridview 怎么设置 , 一些item可以点击,另外.....

我的意思是比如 我让gridview 的第一个item可以点击 第二个不可以点击

<asp:linkbutton id="LinkButton2" runat="server" enabled="false" causesvalidation="False" commandname="Update"
Text="修改">

<asp:linkbutton id="LinkButton1" runat="server" causesvalidation="False" commandname="Delete"
OnClientClick='return confirm("您真的要删除这条记录吗?若执行此操作,项目涉及的月报及年度信息将会同时删除!")' Text="删除">

这样很简单,如果你想实现点击listview的item中的空白地方(不是gridview)响应listviewitem点击事件,那就把listview的item布局中gridview的的宽度调整为wrap_content就可以了,这样你在点击空白地方的时候不会响应gridview控件上的事件了。

在getView()里判断

if(getItem()==2){

viewholder.button.setOnClickListener(lisener);

}

这个要在代码中进行设置,基本上有两种方式:

在GridView所在的 activity(或者fragment)中, 找到该View,监听点击事件:

gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView
parent, View view, int position, long id) { //点击item触发,进行判断,如果需要处理点击,就进行处理,否则,什么也不做 if(/*处理点击条件*/){ //要做的事 } }});在自己写的GridView对应的适配器中(一般继承于BaseAdapter)的getView中进行判断,如果是需呀处理的item, 就调用setOnClickListener,并定义相应的点击事件,否则可以不绑定点击事件。

网站数据信息

"android gridview,android的:tableLayout和gridview有什么不同"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:android gridview,android的:tableLayout和gridview有什么不同的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!