scrollview gridview
package com.fangdamai.salewinner.ui.customer;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.ExpandableListView.OnGroupCollapseListener;
import android.widget.ExpandableListView.OnGroupExpandListener;
import android.widget.GridView;
import android.widget.ListAdapter;
import android.widget.TextView;
import com.fangdamai.salewinner.R;
import com.fangdamai.salewinner.ui.base.BaseActivity;
import com.fangdamai.salewinner.utils.LogUtil;
import com.fangdamai.salewinner.widget.MyGridView;
public class CustomerEditActivity extends BaseActivity {
ExpandableListView expandListview;
int[] childHeight = new int[7];
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_customer_edit);
getSupportActionBar().setTitle("基本信息编辑");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
expandListview = (ExpandableListView) findViewById(R.id.expandableListView1);
MyExpandListAdapter adapter = new MyExpandListAdapter(mContext);
expandListview.setAdapter(adapter);
setExpandableListViewHeight();
expandListview
.setOnGroupCollapseListener(new OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int arg0) {
ViewGroup.LayoutParams params = expandListview
.getLayoutParams();
int orignHeigth = params.height;
// 获取将要展开的子view的高度
int gridviewHeight = childHeight[arg0];
LogUtil.i("oh:" + orignHeigth + " gh:"
+ gridviewHeight);
params.height = orignHeigth - gridviewHeight;
expandListview.setLayoutParams(params);
expandListview.requestLayout();
}
});
expandListview.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int arg0) {
ViewGroup.LayoutParams params = expandListview
.getLayoutParams();
int orignHeigth = params.height;
// 获取将要展开的子view的高度
int gridviewHeight = childHeight[arg0];
LogUtil.i("oh:" + orignHeigth + " gh:"
+ gridviewHeight);
params.height = orignHeigth + gridviewHeight;
expandListview.setLayoutParams(params);
expandListview.requestLayout();
}
});
// for (int i = 0; i < adapter.getGroupCount(); i++) {
// expandListview.expandGroup(i);
// }
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
private void setExpandableListViewHeight() {
ListAdapter listAdapter = expandListview.getAdapter();
int totalHeight = 0;
LogUtil.i("count:" + listAdapter.getCount());
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, expandListview);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
LogUtil.i("height:" + totalHeight);
}
ViewGroup.LayoutParams params = expandListview.getLayoutParams();
params.height = totalHeight
+ (expandListview.getDividerHeight() * (listAdapter.getCount() - 1));
LogUtil.i("exheight:" +params.height);
expandListview.setLayoutParams(params);
expandListview.requestLayout();
}
private int getGridViewHeight(GridView gv) {
ListAdapter listAdapter = gv.getAdapter();
int totalHeight = 0;
LogUtil.i("count:" + listAdapter.getCount());
int count = listAdapter.getCount();
int columns = gv.getNumColumns();
int rows = count / columns + count % columns == 0 ? 0 : 1;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, gv);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
LogUtil.i("height:" + totalHeight);
}
int height = totalHeight + (gv.getVerticalSpacing() * (rows - 1));
return height;
}
private void setGridViewHeight(GridView gridview, int height) {
ViewGroup.LayoutParams params = gridview.getLayoutParams();
params.height = height;
gridview.setLayoutParams(params);
gridview.requestLayout();
}
class MyExpandListAdapter extends BaseExpandableListAdapter {
private Context context;
private String[] groups = { "购房区域", "购房面积", "房源户型/类型", "购房预算", "置业动机",
"急迫程度", "能否决策" };
private String[][] childs = {
{ "不 限", "园区", "新区", "相城区", "姑苏区", "吴中区" },
getResources().getStringArray(R.array.buid_area),
getResources().getStringArray(R.array.buid_type_room),
getResources().getStringArray(R.array.buy_budget),
getResources().getStringArray(R.array.buy_reason),
getResources().getStringArray(R.array.urgent_degree),
getResources().getStringArray(R.array.canconfirm) };
public MyExpandListAdapter(Context context) {
this.context = context;
}
@Override
public Object getChild(int arg0, int arg1) {
return null;
}
@Override
public long getChildId(int arg0, int arg1) {
return 0;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_section_content, null);
GridView gridview = (GridView) convertView
.findViewById(R.id.gridView1);
gridview.setAdapter(new MyGridviewAdatper(childs[groupPosition]));
int height = getGridViewHeight(gridview);
childHeight[groupPosition] = height;
LogUtil.i("position:" + groupPosition + " h:" + height);
setGridViewHeight(gridview, height);
return convertView;
}
@Override
public int getChildrenCount(int arg0) {
return 1;
}
@Override
public Object getGroup(int arg0) {
return groups[arg0];
}
@Override
public int getGroupCount() {
return groups.length;
}
@Override
public long getGroupId(int arg0) {
return 0;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_section_header, null);
TextView txtContent = (TextView) convertView
.findViewById(R.id.txt_header);
txtContent.setText(getGroup(groupPosition).toString());
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int arg0, int arg1) {
return false;
}
}
class MyGridviewAdatper extends BaseAdapter {
private String[] items;
public MyGridviewAdatper(String[] items) {
this.items = items;
}
@Override
public int getCount() {
return items.length;
}
@Override
public Object getItem(int arg0) {
return items[arg0];
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = LayoutInflater.from(CustomerEditActivity.this)
.inflate(R.layout.item_grid_content, null);
Button txtContent = (Button) convertView.findViewById(R.id.button1);
txtContent.setText(getItem(position).toString());
return convertView;
}
}
}
scrollview gridview的更多相关文章
- 【Android】ScrollView+GridView 显示问题
在使用Android的ScrollView里面嵌套GridView时,设置android:layout_height="wrap_content"属性,运行界面的效果不会出现全部数 ...
- 取消安卓listview,scrollview,gridview滑动时候边缘模糊问题
只需在xml文件里面声明: android:faddingEdge = "none" android:faddingEdgelenth = "0dp" andr ...
- Android 用ListView实现GridView分列显示
我想实现百度影音首页的这种效果: 在网上用ScrollView+GridView可以实现,但是touch scrollview的时候会莫名刷新gridview,这样用户体验很不好,而且感觉百度不是这样 ...
- ## GridView 布局:item设置的高度和宽度不起作用、自动适配列数、添加Header和Footer ##
一.item设置的高度和宽度不起作用 转自:http://www.cnblogs.com/0616--ataozhijia/p/6031875.html [Android Pro] listView和 ...
- 自定义两行可左右滑动的GridView
效果图: xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...
- 《安卓网络编程》之第六篇 Android中的WIFI和蓝牙
关于WIFI就不多介绍啦,直接来个段子吧. 问:“WiFi对人体有伤害么?” 答:“不清楚,反正没有WiFi我就浑身不舒服. 比较重要的一点就是WifiManager wm=(WifiManager ...
- wesome-android
awesome-android Introduction android libs from github System requirements Android Notice If the lib ...
- 【朝花夕拾】Android自定义View篇之(七)Android事件分发机制(下)滑动冲突解决方案总结
前言 转载请声明,转自[https://www.cnblogs.com/andy-songwei/p/11072989.html],谢谢! 前面两篇文章,花了很大篇幅讲解了Android的事件分发机制 ...
- ScrollView嵌套ListView,GridView数据加载不全问题的解决
我们大家都知道ListView,GridView加载数据项,如果数据项过多时,就会显示滚动条.ScrollView组件里面只能包含一个组件,当ScrollView里面嵌套listView,GridVi ...
随机推荐
- Program "D:\AndroidDevelopment\android-ndk-r9\ndk-build.cmd" not found in PATH
1.问题描述 2.解决方法:修改ndk-build.cmd的配置路径, 修改成本地ndk-build.cmd所在路径,如下
- 一张图让你学会Python【转】
转自:http://blog.csdn.net/qq_30845505/article/details/51588423 有编程基础的人一看就可以了解 Python 的用法了.真正的 30 分钟上手. ...
- locust性能测试(无 web ui 模式)
前言 前面是在web页面操作,需要手动的点start启动,结束的时候也需要手工去点stop,没法自定义运行时间,这就不太方便.locust提供了命令行运行的方法,不启动web页面也能运行,这就是no- ...
- 2018 Multi-University Training Contest 7
GuGuFishtion dls真厉害,快速求$\sum_{a=1}^n \sum_{b=1}^m gcd(a,b) $的个数,我想的方法是根据上节课dls讲的方法,要容过来容过去,这次不用了. 则$ ...
- python笔记7:优雅的python
7. 如何让python代码更 Pythonic : 1.变量交换: a, b = b, a 2.带有索引位置的集合遍历: colors = ['red', 'green', 'blue', 'yel ...
- 洛谷 P1372 又是毕业季I[数论/神坑规律题]
题目描述 为了把毕业晚会办得更好,老师想要挑出默契程度最大的k个人参与毕业晚会彩排.可是如何挑呢?老师列出全班同学的号数1,2,……,n,并且相信k个人的默契程度便是他们的最大公约数(这不是迷信哦~) ...
- Graphs (Cakewalk) 1 B - medium
Discription Bear Limak examines a social network. Its main functionality is that two members can bec ...
- Docking For WPF–AvalonDock
桌面程序的应用,不可避免的就会用到大量的布局控件,之前的一个项目也想过去做类似于Visual Studio的那种灵活的布局控件,也就是界面上的控件能够实现拖拽放置.隐藏.窗口化等一系列的操作,但由于开 ...
- dedecms 留言板中引用模板文件方法
最近在做一个用dedecms搭建的网站,客户提出要有留言板,dedecms带了一个留言板的模块,安装倒是十分简便,但装完后发现界面十分粗糙.装修比较简单,但是发现遇到一个问题:网站通用的导航栏无法显示 ...
- 《Linux设备驱动开发具体解释(第3版)》(即《Linux设备驱动开发具体解释:基于最新的Linux 4.0内核》)网购链接
<Linux设备驱动开发具体解释:基于最新的Linux 4.0内核> china-pub spm=a1z10.3-b.w4011-10017777404.30.kvceXB&i ...