当前位置:首页 » 安卓系统 » androidgridview行数

androidgridview行数

发布时间: 2022-06-20 00:04:33

① 安卓中gridview固定列数,怎么显示

  1. 如果你的Item的高度是固定的:

  2. 可以通过固定GridView的高度来达到显示4行的效果。当然,这个要动态计算,不超过四行,GridView的高度就是Item的高度乘以行数,超过四行,就是四行的高度。

  3. 如果你item的高度不是固定的:

  4. 需要动态获取每个item的高度,然后再计算GridView的高度。

  5. 不知道行不行,你可以试试下面的方法,,如果这个方法不行 那应该就不行

  6. setNumColumns(int numColumns) 设置显示的列数 (有可能还需要调用一下Adapter的NotifyDataSetChanged)

  7. 要控制行数 只需要控制Adapter的 getCount回调的返回值就行了 然后notify刷新下!

② android GridView 的一个问题,我想把gridview设置成日历,4行7列,怎么实现

首先Gridview,设置numcols=7,然后设置每页的size为4*7 ,这样能够保证每页就是4行7列。 然后就是隐藏textview的问题了,这个实现就有多种方法了。 可以自定一个SurfaceView,在这个SurfaceView中添加textview,当然也可以直接,只是多加一层(遮罩层)。要控制好隐藏很简单visibility的Gone和visible就行了。看你的Item的xml布局写的如何了。 要隐藏和显示可以添加淡入淡出或者其他的动画效果。

③ 为什么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 (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()的之前,我们调用上面的方法,如(accomplishmentStateListView);
因为我是在ListView中嵌套GridView,所以重新计算GridView的总高度的时候,要放在setAdapter(...GridViewAdapter)这个BaseAdapter的衍生类里。代码如下:

/**
* 计算gridview高度
* @param gridView
*/
public static void (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型的控件可以是:

<ListView, GridView>;

<GridView,ListView>;

<ListView,ListView>;

<GridView, GridView>;

<ListView, ScrollView>;

<ScrollView,ListView>;

<GridView, ScrollView>;

<ScrollView, GridView>;

<ScrollView, ScrollView>;

... ...

④ android中GridView默认是从左往右填写数据的,一行满了转至下行, 我如何实现从上往下填写数据呢

事件里面设置,内容改变则自动重置输入起点位置。

⑤ Android中如何让一个GridView的显示空间最多4行

  1. 如果你的Item的高度是固定的:

    可以通过固定GridView的高度来达到显示4行的效果。当然,这个要动态计算,不超过四行,GridView的高度就是Item的高度乘以行数,超过四行,就是四行的高度。

  2. 如果你item的高度不是固定的:

  3. 需要动态获取每个item的高度,然后再计算GridView的高度。

⑥ android gridview每行的列数不同

这个不行的吧,如果要实现每行的列数不一致的话,就要自定义控件了,

⑦ Android中如何是GridView的每行自动适应Adapter的个数

android:numColumns是设置列数的,你可以自己设置要显示多少列,当然你也可以根据屏幕的大小和图片显示的大小来动态地设置列数!如果你不设置的话,gallery好想就是自动地调节列数吧!具体没有去试过!

⑧ 怎么设置GridView的列数和行数

1.android:numColumns此属性设置,如果是“auto_fit”,则会根据android:columnWidth和android:stretchMode自动延展。

2.如果想实现上述左右滚动效果的话,建议用Gallery,gridview的xml属性 3.android:numColumns="6"在adapter里重写,@Override public int getCount() { return 12; 。

⑨ 怎么设置GridView的列数和行数

:这个要在数据源绑定之前做处理,先判断获取的数据源的条数,是否是设置的固定行数的倍数,如果不是,取余以后,在数据源中新增对应的余数行的空白记录数(这里要注意一下,如果页面有做格式化的,比如数字,就需要用0
之类的数字来填补,其他没...

热点内容
索尼手机为什么不能用安卓10 发布:2025-05-16 05:18:46 浏览:783
蔚来es6选择哪些配置实用 发布:2025-05-16 05:18:05 浏览:129
小米如何扫码wifi密码 发布:2025-05-16 05:13:38 浏览:806
楼层密码是什么意思 发布:2025-05-16 05:13:37 浏览:12
创建文件夹失败 发布:2025-05-16 05:12:59 浏览:395
电脑上如何查询自己的配置 发布:2025-05-16 05:06:36 浏览:104
sql中去重 发布:2025-05-16 04:55:06 浏览:893
dwr上传图片 发布:2025-05-16 04:49:46 浏览:121
base64加密的图片 发布:2025-05-16 04:35:46 浏览:355
数据结构c语言版清华大学出版社 发布:2025-05-16 04:30:44 浏览:274