ExpandableListView 中嵌套 gridview ,都是viewgroup 这样嵌套的话 gridview只会显示一行
原因: 就是有滚动条的控件里放有滚动条的控件就会出现只显示一两行的问题,,解决的办法就是, 把子控件设置为没有滚动条. 具体就是自定义控件.
把GridView自定义一下,代码如下,然后用这个自定义的控件就行了
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<com.example.mygridview.MyGridview
android:id="@+id/gridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:columnWidth="80dp"
android:stretchMode="columnWidth"
android:background="@drawable/background">
</com.example.mygridview.MyGridview>
</LinearLayout>
/////////////////////////////////////////////////////////////////////////类这样写就是了,这也算自定义组件
package com.example.mygridview;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
public class MyGridView extends GridView
{
public MyGridView(android.content.Context context,
android.util.AttributeSet attrs)
{
super(context, attrs);
}
/**
* 设置不滚动
*/
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
{
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
//要想该界面除了显示ExpandableListView 还显示别的view的话
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="55dp"
android:text=""
android:gravity="center"
android:background="@drawable/backgroud003"
/>
<ExpandableListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</ExpandableListView>
</LinearLayout>
//activity如何实现
package com.example.mxhome;
import java.util.ArrayList;
import com.example.adapter.GridViewHolder;
import com.example.adapter.MyAdapter;
import com.example.adapter.MyOnItemClickListener;
import com.example.application.APP;
import com.example.application.MyApplication;
import android.os.Bundle;
import android.app.Activity;
import android.app.ExpandableListActivity;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.BaseExpandableListAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class AppCategoryActivity extends ExpandableListActivity
{
private ArrayList<String> arrayList;
private ArrayList<APP> applist;
private ArrayList<APP> mxhomelist;
private ArrayList<APP> basiclist;
private ArrayList<APP> applicationlist;
private ListAdapter madapter=new BaseAdapter()
{
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = getLayoutInflater();
LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.item, null);
ImageView imageView = (ImageView)linearLayout.findViewById(R.id.imageView1);
TextView textView = (TextView)linearLayout.findViewById(R.id.textView1);
// imageView.setLayoutParams(new AbsListView.LayoutParams(96,96));
APP app = applist.get(position);
imageView.setImageDrawable(app.getIcon());
textView.setText(app.getLabel());
return linearLayout;
}
@Override
public long getItemId(int position)
{
// TODO Auto-generated method stub
return 0;
}
@Override
public Object getItem(int position)
{
// TODO Auto-generated method stub
return null;
}
@Override
public int getCount()
{
return applist.size();
}
};
private BaseExpandableListAdapter adapter=new BaseExpandableListAdapter()
{
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
/**
* @return自定义的textview
*/
public TextView getGenericView() {
// Layout parameters for the ExpandableListView
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 64);
TextView textView = new TextView(AppCategoryActivity.this);
textView.setLayoutParams(lp);
// Center the text vertically
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
// Set the text starting position
textView.setPadding(36, 0, 0, 0);
textView.setBackgroundResource(R.color.groud);
return textView;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = getGenericView();
textView.setText(arrayList.get(groupPosition));
return textView;
}
@Override
public long getGroupId(int groupPosition) {
return 0;//可以不填
}
@Override
public int getGroupCount() {
return arrayList.size();//有几组
}
@Override
public Object getGroup(int groupPosition) {
return null;//可以不填
}
@Override
public int getChildrenCount(int groupPosition) {
return 1;//每组只有一个gridview,要清楚
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
GridViewHolder gridViewHolder;
if(convertView==null)
{
gridViewHolder = new GridViewHolder();
convertView= getLayoutInflater().inflate(R.layout.expandlist_gridview, null);
gridViewHolder.gridview=(GridView) convertView.findViewById(R.id.gridView1);
convertView.setTag(gridViewHolder);
}
else
{
gridViewHolder= (GridViewHolder)convertView.getTag();
}
switch (groupPosition)
{
case 0:
gridViewHolder.gridview.setAdapter(new MyAdapter(AppCategoryActivity.this, basiclist));
gridViewHolder.gridview.setOnItemClickListener(new MyOnItemClickListener(AppCategoryActivity.this,basiclist));
break;
case 1:
gridViewHolder.gridview.setAdapter(new MyAdapter(AppCategoryActivity.this, mxhomelist));
gridViewHolder.gridview.setOnItemClickListener(new MyOnItemClickListener(AppCategoryActivity.this,mxhomelist));
break;
case 2:
gridViewHolder.gridview.setAdapter(new MyAdapter(AppCategoryActivity.this, applicationlist));
gridViewHolder.gridview.setOnItemClickListener(new MyOnItemClickListener(AppCategoryActivity.this,applicationlist));
break;
default:
gridViewHolder.gridview.setAdapter(new MyAdapter(AppCategoryActivity.this, mxhomelist));
gridViewHolder.gridview.setOnItemClickListener(new MyOnItemClickListener(AppCategoryActivity.this,mxhomelist));
break;
}
return convertView;
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return 0;//可以不填
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return null;//可以不填
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_category);
iniList();
iniText();
setListAdapter(adapter);
}
private void iniText()
{
arrayList = new ArrayList<String>();
arrayList.add("Basic Programs");
arrayList.add("MXHome");
arrayList.add("Applications");
arrayList.add("News & Weather");
arrayList.add("Entertainment");
arrayList.add("Life Style");
arrayList.add("Communication");
arrayList.add("Edu & Finance");
arrayList.add("Multimedia");
arrayList.add("Tools & ETC");
}
private void iniList()
{
applist = MyApplication.getAPPlist();
TextView all =(TextView) findViewById(R.id.textView2);
all.setText("all programs(" + applist.size()+")");
mxhomelist = new ArrayList<APP>();
basiclist = new ArrayList<APP>();
applicationlist = new ArrayList<APP>();
for (int i = 0; i <applist.size(); i++)
{
APP app = applist.get(i);
if((app.getLabel()+"").contains("我的桌面"))
{
mxhomelist.add(app);
}
else if(i<=15)
{
basiclist.add(app);
}
else if(i>15)
{
applicationlist.add(app);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_app_category, menu);
return true;
}
}
相关推荐
ExpandableListView嵌套GridView的实现,
ExpandableListView 中完美嵌套 GridView
android中ExpandableListView嵌套GridView的使用
1.ExpandableListView 嵌套gridView ,在 gridView里处理点击事件 2.group中自己可以自定义文字和图片,本例中定义文字
ExpandableListView嵌套GridView,GridView中的item带有选中功能
安卓ExpandableListView嵌套Gridview嵌套用法,与多点触控图片缩放。代码写的交简单。数据少,但有代表性。
1、ExpandableListView嵌套GridView 2、group中自定义文字和图片 原文章在 http://blog.csdn.net/u011123829/article/details/9278351
ExpandableListView嵌套GridView的实现,并且手动自定义gridview已适应expandableListView
android中ExpandableListView嵌套ListView和GridView的使用
我看到很多 是ExpandableListView嵌套gridview。 但很多人不需要ExpandableListView 只是单纯的ListView 因此 随意写了一份 给大家借鉴。
ExpandableListView嵌套GridView 实现多标题
[四次元]Android中实现Iphone样式的AlertDialog.zip [四次元]Android实现Windows风格的Dialog.zip [四次元]dlna库源代码包.zip [四次元]gridview分页效果.zip [四次元]HerilyAlertDialog完全自定义的Dialog.zip [四...