android横向gridview
① gridview如何控制行数。。
GridView本身不能规定行数,这个类的行数是由宽度和元素个数自动算出来的。不知道楼主想实现哪种效果,我的两个思路:
1,计算传入Adapter的元素个数,因为元素总数除以numColumn=行数,这样你就能得到你想要的numColumn,而它是可以设置的。这样做的话,元素多了会很挤,可以用ScrollView解决。
2,用横向的LinearLayout代替GridView,想要两行就来两个LinearLayout,三行就来三个,数据人为得先平均分开,给各个Layout
② 求教高手,android下如何让GridView能够水平滚动,行数固定是三行
gridview外面套一个horizontalscrollview
③ android GridView 如何设置为左右可滚动
GridView不支持左右滚动。
左右滚动的需求可考虑:
在外层加一个HorizontalScrollView, 不过这种滑动体验并不好,上下左右均可滑动,如果是斜着滑的时候,体验差。当然,如果你会自定义HorizontalScrollView把滑动区分为斜着上下滑和斜着左右滑,再把斜着上下滑的事件传递给子View也是可以的。
可以考虑Viewpager里加载多个GridView,这样GridView就可以一页一页的滑
④ Android GridView横竖屏切换会丢失数据
如果你想要禁止横竖屏切换的话可以在配置中修改.
你说有问题,但不知有什么问题,如果你怕数据丢失
在切换的时候会调用onConfigrationChange方法,才进行切换,你可以重载他,把你的数据进行保存。
⑤ 急求!Android,gridView,两行间距过大(一页)。android:horizontalSpacing="2dip"试过无效
android:horizontalSpacing 在Gridview排列的时候不是优先考虑的,GridView有个列数的控制,在当前GridView的宽度下,能展示的完设置的列数则平均分配,在当前不够分配的时候才会考虑那个android:horizontalSpacing设置的值
⑥ 安卓使用GridView横向列表和大神制作的HorizontalListView有什么区别
包裹HorizontalScrollView控件是GirdView横向滚动的基本条件
GirdView外包裹LinearLayout是java代码中参数设置的必要条件
不用自定义组件,只要在布局文件里将ListView放在HorizontalScrollView即可,不用使用自定义组件。
第一种情况是按照ListView原本的属性每次增加条目都是在下方,而有时候我们需要的是一种可以横向增加条目的ListView。
⑦ 为什么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
法1.直接用tablelayout gridview是根据你每行的单元数自动生成的行数;
法2.可以在代码里根据view数来动态设置列数,比如有10记录可以设置列数为10/3+1,这样就有三行四列了。
如果您对我的回答有不满意的地方,还请您继续追问;
答题不易,互相理解,互相帮助!
⑨ 怎么让gridview记录横向显示
2个方法:
1、用datalist,然后把显示改为横向显示 repeatdirection:horizontal
2、用table 中的column 和row 拼出行和列榜定datagrid上。
⑩ android开发gridview的item问题
1.android:numColumns="3" 可以控制girdview一行显示多少个item。=“3”就一行显示3个。
2.让3个item平分并撑满屏幕
1)girdview的宽必须设置为match_parent android:layout_width="match_parent",确定整个gridview的宽是撑满了整个屏幕宽度的。
2)让adapter里面载入的布局宽是android:layout_width="match_parent",gridview会自己进行计算宽度。
3)Imageview在adapter view布局中居中,宽也设置为android:layout_width="match_parent"。
4)防止图片比item小,可以设置Imageview的android:scaleType="fitXY" 会自动拉伸图片。Imageview 设置src是根据图片尺寸显示,background是根据view的大小来显示。这可以根据你需求来
如果只是显示图片的这样基本就可以了。如果比较复杂的item也只是修改adapterView布局