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 ...
随机推荐
- 00.mp4v2工具的用法
1.交叉编译mp4v2库# ./configure --prefix=/usr/local/mp4v2-2.0.0 --host=arm-hisiv300-linux CC=arm-hisiv300 ...
- [SaltStack] salt-master启动流程
SaltStack源码阅读 做salt有一段时间了, 一直没从源码层面去理解, 好吧, 开始读读源码 -_- 那就从salt-master的启动开始吧. 启动salt-master方法: /etc/i ...
- WSL使用小结:从ArchLinux到Manjaro
1.前言 上一篇介绍了Windows 10下配置WSL环境,通过ALWSL脚本替换为ArchLinux的过程.这一篇介绍根据ArchLinux官网的说明,在WSL下安装ArchLinux,并切换到发行 ...
- hexo安装问题解决方法
常见错误 { [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' ...
- 长安大学第四届“迎新杯”程序设计竞赛 F 打铁的箱子【数学/进制思维/折半枚举】
题目描述 作为彩虹岛上最擅长打铁的人,
- 使用TensorFlow 来实现一个简单的验证码识别过程
本文我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别. 1.验 ...
- Java 字符集,编码、解码
1. 计算机中文件.数据底层都是基于二进制的. 计算机底层并没有文本文件.图片文件之分,它只是记录着每个文件的二进制序列. 字符集:包含着字符和二进制序列之间的对应关系,一个字符对应一个二进制序列. ...
- (转)python装饰器二
Python装饰器进阶之二 保存被装饰方法的元数据 什么是方法的元数据 举个栗子 def hello(): print('Hello, World.') print(dir(hello)) 结果如下: ...
- windows 屏幕坐标 窗口坐标 客户区坐标 逻辑坐标 设备坐标之间的关系及转换
设置坐标映射 (1)Windows坐标系统 Windows坐标系分为逻辑坐标系和设备坐标系两种,GDI支持这两种坐标系.一般而言, GDI的文本和图形输出函数使用逻辑坐标,而在客户区移动或按下鼠 ...
- 2017.2.12 开涛shiro教程-第八章-拦截器机制
原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398 根据下载的pdf学习. 1.拦截器介绍 下图是shiro拦截器的基础类图: 1.Namea ...