- 浏览: 5825976 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
ExpandableListView的小图标有个状态,一个是不点击的情况,一个是点击后展开的情况,用xml配置如下:
Java的代码如下:
注意:不知道为什么,使用自定义的GroupIndicator会发生图片被拉伸的现象,为了解决这个问题需要定义一个长度为groups.length的boolean数组:
然后重写OnGroupCollapseListener和OnGroupExpandListener用于修改当前group的状态:
最后在getGroupView()中应用,代码片段如下:
over!
Android版手风琴(ExpandableListView)
创新源于模仿之四:增强的ExpandableListView
android api里的例子:
Android UI 之实现多级列表TreeView
http://blog.csdn.net/carrey1989/article/details/10227165
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_expanded="true" android:drawable="@drawable/narrow_select" /> <item android:drawable="@drawable/narrow" /> </selector>
Java的代码如下:
ExpandableListView listView = getExpandableListView(); listView.setGroupIndicator(this.getResources().getDrawable(R.drawable.group_icon_selector));
注意:不知道为什么,使用自定义的GroupIndicator会发生图片被拉伸的现象,为了解决这个问题需要定义一个长度为groups.length的boolean数组:
private boolean[] isOpen=new boolean[groups.length];
然后重写OnGroupCollapseListener和OnGroupExpandListener用于修改当前group的状态:
expandableListView.setOnGroupCollapseListener(onGroupCollapseListener); expandableListView.setOnGroupExpandListener(onGroupExpandListener); expandableListView.setGroupIndicator(null);//不要自带的了!!! OnGroupCollapseListener onGroupCollapseListener=new OnGroupCollapseListener(){ @Override public void onGroupCollapse(int groupPosition) { // TODO Auto-generated method stub isOpen[groupPosition]=false; } }; OnGroupExpandListener onGroupExpandListener=new OnGroupExpandListener(){ @Override public void onGroupExpand(int groupPosition) { // TODO Auto-generated method stub isOpen[groupPosition]=true; } };
最后在getGroupView()中应用,代码片段如下:
@Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { // TODO Auto-generated method stub TextView textView=null; if(convertView==null){ textView=new TextView(mContext); AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, 50); textView.setLayoutParams(lp); textView.setGravity(Gravity.CENTER); textView.setPadding(10, 0, 0, 0); textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16.0f); textView.setTextColor(0xFFC6B39C); textView.setBackgroundResource(R.drawable.bg_tv);//bg_tv_expand convertView=textView; }else{ textView=(TextView)convertView; } //为了处理图标被拉伸的问题!这里采用偷懒的办法让textView傍边产生一个图标,如果GroupView只是一个TextView的话,推荐这样做! if(isOpen[groupPosition]){ Drawable leftDrawable= resources.getDrawable(R.drawable.arrow_down_on); leftDrawable.setBounds(0, 0, leftDrawable.getMinimumWidth(), leftDrawable.getMinimumHeight()); textView.setCompoundDrawables(leftDrawable, null, null, null); }else{ Drawable leftDrawable= resources.getDrawable(R.drawable.arrow_right_off); leftDrawable.setBounds(0, 0, leftDrawable.getMinimumWidth(), leftDrawable.getMinimumHeight()); textView.setCompoundDrawables(leftDrawable, null, null, null); } textView.setText(((Market)getGroup(groupPosition)).market); return textView; }
over!
Android版手风琴(ExpandableListView)
创新源于模仿之四:增强的ExpandableListView
android api里的例子:
import android.app.ExpandableListActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.ContextMenu.ContextMenuInfo; import android.widget.AbsListView; import android.widget.BaseExpandableListAdapter; import android.widget.ExpandableListAdapter; import android.widget.ExpandableListView; import android.widget.TextView; import android.widget.Toast; import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import com.example.android.apis.R; /** * Demonstrates expandable lists using a custom {@link ExpandableListAdapter} * from {@link BaseExpandableListAdapter}. */ public class ExpandableList1 extends ExpandableListActivity { ExpandableListAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set up our adapter mAdapter = new MyExpandableListAdapter(); setListAdapter(mAdapter); registerForContextMenu(getExpandableListView()); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("Sample menu"); menu.add(0, 0, 0, R.string.expandable_list_sample_action); } @Override public boolean onContextItemSelected(MenuItem item) { ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo) item.getMenuInfo(); String title = ((TextView) info.targetView).getText().toString(); int type = ExpandableListView.getPackedPositionType(info.packedPosition); if (type == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition); int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition); Toast.makeText(this, title + ": Child " + childPos + " clicked in group " + groupPos, Toast.LENGTH_SHORT).show(); return true; } else if (type == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition); Toast.makeText(this, title + ": Group " + groupPos + " clicked", Toast.LENGTH_SHORT).show(); return true; } return false; } /** * A simple adapter which maintains an ArrayList of photo resource Ids. * Each photo is displayed as an image. This adapter supports clearing the * list of photos and adding a new photo. * */ public class MyExpandableListAdapter extends BaseExpandableListAdapter { // Sample data set. children[i] contains the children (String[]) for groups[i]. private String[] groups = { "People Names", "Dog Names", "Cat Names", "Fish Names" }; private String[][] children = { { "Arnold", "Barry", "Chuck", "David" }, { "Ace", "Bandit", "Cha-Cha", "Deuce" }, { "Fluffy", "Snuggles" }, { "Goldy", "Bubbles" } }; public Object getChild(int groupPosition, int childPosition) { return children[groupPosition][childPosition]; } public long getChildId(int groupPosition, int childPosition) { return childPosition; } public int getChildrenCount(int groupPosition) { return children[groupPosition].length; } public TextView getGenericView() { // Layout parameters for the ExpandableListView AbsListView.LayoutParams lp = new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, 64); TextView textView = new TextView(ExpandableList1.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); return textView; } public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { TextView textView = getGenericView(); textView.setText(getChild(groupPosition, childPosition).toString()); return textView; } public Object getGroup(int groupPosition) { return groups[groupPosition]; } public int getGroupCount() { return groups.length; } public long getGroupId(int groupPosition) { return groupPosition; } public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { TextView textView = getGenericView(); textView.setText(getGroup(groupPosition).toString()); return textView; } public boolean isChildSelectable(int groupPosition, int childPosition) { return true; } public boolean hasStableIds() { return true; } } }
Android UI 之实现多级列表TreeView
http://blog.csdn.net/carrey1989/article/details/10227165
发表评论
-
ViewPager引导页根据滑动渐变背景色
2017-03-31 09:38 28741、主要依赖: compile'com.android.su ... -
Android 新推出基于物理的动画库SpringAnimation,完全诠释什么叫做弹簧效果
2017-03-30 10:38 2642Android 最近推出一个新的基于物理学的动画支持库,命名为 ... -
一个比较强大的提供各种形状的ImageView
2016-12-26 09:54 2991github上比较老的项目了,但是还是比较好用的。 各种形状总 ... -
PhotoView点击放大图片效果
2016-12-21 10:13 6103使用的PhotoView是这个版本的,比较小巧,很好用,比gi ... -
仿微信页面切换图标颜色渐变效果
2015-11-23 14:54 4479主要是提供一种思路,一般来书,类似效果无非就是在Canvas, ... -
把任意Drawable转换成基于progress填充的drawable
2015-11-11 16:29 2816把任意Drawable转换成基于progress填充的draw ... -
一个用来设置警示View 的呼吸式背景颜色的工具类BreathingViewHelper
2015-10-10 14:03 3091一个简单的小工具类,用来设置警示 View 的呼吸式背景颜色 ... -
单手操作图片控件 镜像、置顶、缩放、移动:StickerView
2015-10-08 11:21 3232单手操作图片控件 镜像、置顶、缩放、移动 impo ... -
图片浏览zoom效果
2015-10-08 11:05 1848不仅实现了Lollipop中打开新的activity 的zoo ... -
Android App状态栏变色:ColorfulStatusBar
2015-09-24 12:38 9977适用于版本大于等于19以上。 import android ... -
PathView实现炫酷SVG动画
2015-08-25 09:23 4475解析SVG,需要将一个androidsvg.jar包含进lib ... -
LinearLayout增加divider分割线
2015-08-13 14:58 11156在android3.0及后面的版本在LinearLayout里 ... -
Android换肤白天/夜间模式的框架
2015-07-29 15:36 2974Android换肤/夜间模式的Android框架,配合them ... -
使用ActivityOptions做Activity切换动画
2015-04-10 11:02 6640不知道大家有没有注意到startActivity(Intent ... -
一个不错的ArcMenu
2015-01-23 10:34 3948ArcMenu这种效果现在很多人都实现了 而且代码质量也 ... -
使用ScheduledExecutorService延时关闭一个全屏的对话框
2014-12-29 16:38 4421自定义style,设置全屏属性 <resources ... -
让View只显示下边框
2014-10-23 17:13 4010下面的代码是实现一个带边框的xml,很常见 <?xm ... -
让一张图片从模糊慢慢变清晰动画过程
2014-01-27 16:38 9298import java.io.IOExcepti ... -
ListView,GridView之LayoutAnimation特殊动画的实现
2013-05-24 11:23 34418LayoutAnimation干嘛用的?不知道的话网上搜一下。 ... -
食神摇摇中图片的晃动效果
2013-04-27 11:45 5500可以是这样子实现滴: btn_shake=(Image ...
相关推荐
在这个小项目中,开发者通过`ExpandableListView`创建了一个演示应用,以便于其他开发者学习和借鉴。 首先,我们要理解`ExpandableListView`的基本使用方法。它继承自`AdapterView`,因此需要一个适配器(`...
本文实例讲述了Android改变ExpandableListView的indicator图标实现方法。分享给大家供大家参考,具体如下: 1)定义xml文件先,命名为expand_list_indicator.xml <?xml version=1.0 encoding=UTF-8?> <...
在Android开发中,`ExpandableListView`是一种非常实用的控件,它允许用户展示具有层级关系的数据,类似于树形结构。这种控件非常适合用来显示有组织的、分组的信息,例如菜单、目录或者分类数据。在本教程中,我们...
`Fragment`是Android中用于构建动态、模块化应用的组件,它可以在Activity中独立存在和替换,便于实现多屏设备上的布局切换。为了在`Fragment`中使用`ExpandableListView`,你需要创建一个新的`Fragment`类,然后在`...
默认情况下,`ExpandableListView`会显示一个加号或减号图标来表示组是否展开。要“去掉了下拉标志”,我们需要自定义适配器(Adapter),覆盖`getGroupView()`方法,不再显示这个图标。可以通过设置组视图的布局来...
在Android开发中,`ExpandableListView` 是一个非常实用的控件,用于展示可以展开和折叠的列表。这个控件允许用户对数据进行分组,增强了用户体验,特别是处理层次结构数据时。本篇文章将深入探讨如何处理`...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,每个分组下可以包含多个子项。这种控件在显示层次结构数据时非常实用,比如目录结构、菜单列表或者分类信息展示。下面将详细...
在Android应用开发中,"ExpandableListView实现购物车页面"是一个常见的需求,它涉及到用户界面设计、数据管理和交互。ExpandableListView是Android SDK提供的一种可扩展的列表视图,允许用户展示分组数据,每组内...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展示可折叠的列表,其中每个父项可以展开显示多个子项。这个控件非常适合于需要层次结构数据展示的应用,例如目录树、菜单或者分类信息。在这个...
在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的分组数据。这个项目“带全选的ExpandableListView”显然着重于增强这种控件的功能,使其具有全选子项的能力。这样的功能在处理...
在Android开发中,ExpandableListView是一个非常有用的控件,它允许我们展示可折叠的列表,通常用于层次结构的数据展示。本教程将详细讲解如何自定义ExpandableListView,使其一级标题具有类似于RadioButton的单选...
在Android开发中,`ExpandableListView`是一种常用的控件,它扩展了标准的`ListView`功能,允许子项可以被展开或折叠,呈现层次结构的数据。这个控件非常适合用来展示具有树状结构的信息,比如菜单、目录或者组织...
在Android开发中,`ExpandableListView`是一种常用的控件,它允许用户展开和折叠分组,通常用于显示具有层次结构的数据。在这个例子中,我们将会深入探讨如何利用`ExpandableListView`来创建一个多级菜单分类展示的...
在Android开发中,`ExpandableListView`是一种常用的控件,它可以展示可折叠的子列表,类似于QQ应用中的联系人列表。这个"ExpandableListView仿QQ列表的实现" demo旨在教你如何利用`ExpandableListView`创建类似QQ...
"ExpandableListView实现二级列表购物车" ExpandableListView是Android中的一种视图组件,用于显示二级列表的数据。它可以将数据分组显示,方便用户浏览和操作。下面我们来详细介绍如何使用ExpandableListView实现...
在Android开发中,`ExpandableListView`是一种特殊的`ListView`,它允许子项可以展开或折叠,呈现层次结构的数据。这种视图控件通常用于显示具有分组和子项的复杂数据,例如联系人列表、菜单目录或者层级结构的任务...
在Android开发中,`ExpandableListView`是一种常用的控件,用于展示可以展开和折叠的列表。这个控件允许用户在一级列表项下显示更详细的数据,通常用于构建层级结构清晰的列表,例如菜单、目录或者分类信息。在给定...