ExpandableListView中不同条目的位置不同的显示位置
来源:互联网 发布:mastercam三维编程 编辑:程序博客网 时间:2024/04/20 05:02
项目需要,要在ExpandableListView中根据父类条目的位置对子类条目左右显示位置进行调整。
经过试验,最总效果如下:
经过最近开发总结得出,RelativeLayout的可用性要远远超过LinearLayout。
LinearLayout相对来说是比较简单的,入门快,能够快速搭建简单的效果图,但是遇到复杂UI时,使用LinearLayout往往是得不到很好的解决方案的,而这时候RelativeLayout就显得非常的灵活,迎刃而解。建议对RelativeLayout深入了解。
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background" android:orientation="vertical" > <ExpandableListView android:id="@+id/ExpandableListView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:childDivider="@drawable/list_separator" android:clickable="true" android:dividerHeight="2.0dip" android:fadeScrollbars="true" android:fadingEdge="none" android:groupIndicator="@null" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:cacheColorHint="#00000000" android:scrollbarAlwaysDrawHorizontalTrack="true" android:scrollbarStyle="outsideOverlay" > </ExpandableListView> <!-- android:cacheColorHint="#00000000" 取消上下滑动时会出现黑色底色的情况 android:listSelector属性,默认会显示选中的item为橙黄底色--></LinearLayout>TreeViewAdapter.java
package com.yang.adapter;import android.content.Context;import android.graphics.Color;import android.text.TextPaint;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.RelativeLayout;import android.widget.TextView;import com.yang.R;public class TreeViewAdapter extends BaseExpandableListAdapter {private String[] groups = { "草帽海贼团", "四 皇", "王下七武海", "海军本部" };private String[][] children = {{ "蒙其·D·路飞 ", "罗罗诺亚·索隆 ", "娜美 ", "乌索普 ", "山治", "乔巴", "弗兰奇", "布鲁克","妮可·罗宾" },{ "红发海贼团", "白胡子海贼团", "凯多", "夏洛特·玲玲" },{ "乔拉可尔·密佛格", "巴索罗米·熊", "唐吉诃德·杜夫拉明高", "波雅·汉库克", "沙·克洛克达尔","海侠·吉贝尔", "月光·莫利亚" }, { "元帅", "大将", "中将", "准将" } };private LayoutInflater inflater;private LayoutInflater inflater1;public TreeViewAdapter(Context c) {this.inflater = LayoutInflater.from(c);this.inflater1 = LayoutInflater.from(c);}@Overridepublic Object getChild(int groupPosition, int childPosition) {return childPosition;}@Overridepublic long getChildId(int groupPosition, int childPosition) {return 0;}class ViewHolder {TextView TextView001;TextView TextView002;}@Overridepublic View getChildView(final int groupPosition, final int childPosition,boolean isLastChild, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = inflater1.inflate(R.layout.child, null);holder = new ViewHolder();holder.TextView001 = (TextView) convertView.findViewById(R.id.TextView001);holder.TextView002 = (TextView) convertView.findViewById(R.id.TextView002);//设置为粗体TextPaint tp = holder.TextView002.getPaint();tp.setFakeBoldText(true);holder.TextView002.setTextColor(Color.RED);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.TextView001.setText(children[groupPosition][childPosition]);if (groupPosition % 2== 0 ) {//关键设置代码RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);params.addRule(RelativeLayout.RIGHT_OF, holder.TextView001.getId());holder.TextView002.setLayoutParams(params);holder.TextView002.setText("牛");} else {//关键设置代码RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,RelativeLayout.TRUE);holder.TextView002.setLayoutParams(params);holder.TextView002.setText("厉害");}return convertView;}@Overridepublic int getChildrenCount(int groupPosition) {return children[groupPosition].length;}@Overridepublic Object getGroup(int groupPosition) {return "dd";}@Overridepublic int getGroupCount() {return groups.length;}@Overridepublic long getGroupId(int groupPosition) {return groupPosition;}@Overridepublic View getGroupView(int groupPosition, boolean isExpanded,View convertView, ViewGroup parent) {TextView textview = null;if (convertView == null) {convertView = inflater.inflate(R.layout.parent, null);textview = (TextView) convertView.findViewById(R.id.TextView01);convertView.setTag(textview);} else {textview = (TextView) convertView.getTag();}textview.setText(groups[groupPosition]);return convertView;}@Overridepublic boolean hasStableIds() {return false;}@Overridepublic boolean isChildSelectable(int groupPosition, int childPosition) {return false;}}
源码下载地址
- ExpandableListView中不同条目的位置不同的显示位置
- 动态显示不同位置的实现
- Dialog显示在Activity不同的位置
- Dialog显示在Activity不同的位置
- Ladda 应用提交表单的时候显示loading加载中 包括不同位置,不同效果
- Android 中toast显示在不同位置
- 字符串的不同存储位置
- 利用if实现文本位置的不同显示
- listview显示不同条目的Adapter
- .Net 不同操作系统中显示的窗体大小,控件位置不一样
- C++中const的不同位置的用法
- input点击后,显示DIV,不同的top,会出现在不同的位置解决办法
- Java中Synchronized修饰不同位置的用法
- const的位置和不同位置产生的区别
- Footer的两种不同的位置
- MATLAB中查找两个不同维度的矩阵中相同或者不同元素的位置
- css position属性的理解 文档流中位置与实际位置的不同
- 在图片的不同位置添加文字
- Oracle Function 函数
- PHP之静态HTML
- Oracle Procedure 存储过程
- UVA - 10025 :The ? 1 ? 2 ? ... ? n = k problem
- php imagettftext 规定宽度内自动换行
- ExpandableListView中不同条目的位置不同的显示位置
- UNITILS 测试框架
- jQuery常用方法一览
- 开发人员眼中最好的代码编辑器是谁?
- 新建android项目gen目录下未生成R文件解决方案
- iOS开发经验总结
- Android中为通知栏添加滚动条
- com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败
- java反射详解