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 ...
随机推荐
- Web安全-XSS-SQL注入-CSRF
一.XSS 跨站脚本攻击(Cross Site Scripting): 1.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击 ...
- 爬虫学习笔记(二)http请求详解
上篇博客里面写了,爬虫就是发http请求(浏览器里面打开发送的都是http请求),然后获取到response,咱们再从response里面找到想要的数据,存储到本地. 咱们本章就来说一下什么是http ...
- Codeforces Gym 101194C Mr. Panda and Strips(2016 EC-Final,区间DP预处理 + 枚举剪枝)
题目链接 2016 EC-Final 题意 现在要找到数列中连续两个子序列(没有公共部分).要求这两个子序列本身内部没有重复出现的数. 求这两个子序列的长度的和的最大值. 首先预处理一下.令$ ...
- codevs——1169 传纸条(棋盘DP)
2008年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 小渊和小 ...
- Zabbix4.0安装与入门及常见配置
1.安装zabbix-server 环境: 10.0.0.50 zabbix-server 10.0.0.51 zabbix-web 10.0.0.52 zabbix-agent yum -y ins ...
- Jackson是线程安全的吗
网上说是线程安全的,内部代码用了ThreadLocal.Synchronized这些线程安全类和关键字,可以放心的用. 避免每次使用都new一个,全局配置一个ObjectManager的对象将大大减少 ...
- 详解Webpack2的那些路径
Webpack2 中有很多涉及路径参数配置,若不知其所以然,很容易混淆出错.本文尽可能的汇集了 Webpack2 中设计路径的配置,力争深入浅出. context context 是 webpack ...
- php根据日期时间生成随机编码
订单.申请单之类的需要一个编码,通过下面方法可得 代码如下: $PNUM="PG" . date("YmdHis").rand(1000,9999);
- ADO.NET访问Access(文本数据库)数据操作(CRUD)
1,ADO.NET访问Access(文本数据库)数据操作(CRUD) 2,DatabaseDesign 文本数据库Northwind.mdb 3,/App_Code 3.1,/App_Code/DBC ...
- Linux内核裁剪的具体步骤
在menuconfig中配置: 详细介绍内核配置选项及删改情况 第一部分:全部删除 Code maturity level options ---> 代码成熟等级选项 []Prompt for ...