当前位置:首页 » 安卓系统 » androidgridview高度

androidgridview高度

发布时间: 2022-12-25 11:05:05

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

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

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

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

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

Ⅱ 为什么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的remove view at方法怎么用啊

ListView想要删除View的话,只需要删除View对应的数据,然后调用ListView绑定的Adapter的NotifyDataChanged方法,通知ListView重绘即可!

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

以下两种方式都可以做到:

一、在xml布局文件中设置,wrap_content即表示根据gridView的内容自使用宽高,代码如下:

android:layout_width="wrap_content"
android:layout_height="wrap_content"

二、在代码中动态设置,可以在对gridview赋值之后,计算gridview的宽高,然后进行设置:

java">intheight=20;//此处的高度需要动态计算		
intwidth=30;//此处的宽度需要动态计算
LinearLayout.LayoutParamslinearParams=newLayoutParams(width,height);
gridview.setLayoutParams(linearParams);//使设置好的布局参数应用到控件


需要注意的是:如果你的gridview是嵌套在ScrollView中,那么,你需要重写gridview控件,不然gridview只显示一行的问题(即高度不够),具体重写方式,可以参考下面代码:

/**
*@authorhnbcinfo
*自定义GridView控件,解决在ListView或ScrollView中使用GridView导致GridView显示不全的问题
*当前应用:时间轴中,图片显示
*/
{
publicGridViewForScrollView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}

publicGridViewForScrollView(Contextcontext){
super(context);
}

publicGridViewForScrollView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
}

@Override
publicvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){

intexpandSpec=MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec,expandSpec);
}
}

Ⅳ 安卓gridview的item高度不同导致重叠,怎样解决

自定义GridView以解决ScrollView嵌套Android自身GridView出现的疑难问题 Android开发中偶尔会遇到ScrollView嵌套GridView情景,但是谷歌官网是不推荐这种方式的,因为他们都有滚动条,嵌套使用会有冲突,无奈只能另谋他路,自定义个仿GridView的控件 1.定义attrs.xml文件 <declare-styleable name=“

Ⅵ android的gridview 怎么控制其高度

1,控制其控件的总体高度,可以通过布局直接设置layout_height,也可以动态赋值给他,但我相信楼主问的不是这个。
2,控制每个单元的高度。由于gridview没有直接set单元高度的函数,而gridview是根据adapter动态生成的,所以一般在adapter的getView方法中得到(该方法返回的View的高度),在这里处理即可。

Ⅶ android gridview每个item高度宽度都是相同的,如何实现第一个item高度为其他的

你在getview里面给每个view设置setLayoutParamas 比如第一个item的高度是100 后面的item你直接设置成50就可以了

Ⅷ 怎么修改gridview元素的高度自适应填满gridview-Android开发问答

gridview 布局
android:layout_marginTop="10dip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:numColumns="2"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:background="@android:color/white"

热点内容
手机文件夹如何加密码 发布:2025-04-07 07:33:55 浏览:275
C语言预编译的例子 发布:2025-04-07 07:12:27 浏览:756
软件加密破解 发布:2025-04-07 07:04:34 浏览:835
乌合之众中央编译出版社百度网盘 发布:2025-04-07 06:53:12 浏览:806
美颜算法磨皮 发布:2025-04-07 06:38:37 浏览:5
手机视频源码下载 发布:2025-04-07 06:34:21 浏览:740
安卓手机投屏到电视上怎么切换 发布:2025-04-07 06:22:02 浏览:379
支票密码多少位 发布:2025-04-07 06:16:09 浏览:282
php观察 发布:2025-04-07 06:16:06 浏览:868
累不存储 发布:2025-04-07 06:09:42 浏览:365