首先控件是没有提供api修改的,只能自己想办法
思路:去掉默认,在item的textview中自己根据条件判断显示
效果图:

步骤1:去掉默认的
<ExpandableListView
android:id="@+id/expandable_listview"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:groupIndicator="@null"
/>
关键android:groupIndicator="@null"
步骤2:group_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/button_select">
<TextView
android:id="@+id/group_item_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp"
android:gravity="center"
android:text="父标题"
android:textColor="#fff"
android:textSize="16sp"
android:layoutDirection="ltr"
/>
</LinearLayout>
步骤3:在adapter中处理
public View getGroupView(int parentPosition, boolean isExpandable, View concertView, ViewGroup viewGroup) {
GroupViewHolder groupViewHolder = null;
if(concertView == null) {//如果重用视图不存在则创造,如果存在则重用,提高加载效率
concertView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.group_item,viewGroup,false);
groupViewHolder = new GroupViewHolder();
groupViewHolder.groupTextView = concertView.findViewById(R.id.group_item_text);
concertView.setTag(groupViewHolder);
}
groupViewHolder = (GroupViewHolder) concertView.getTag();
groupViewHolder.groupTextView.setText(groupItems[parentPosition]);
if (childItems[parentPosition].length > 1){
if (isExpandable){
groupViewHolder.groupTextView.setCompoundDrawablesWithIntrinsicBounds(viewGroup.getContext().getResources().getDrawable(R.mipmap.icon_bottom_arrow),null,null,null);
} else {
groupViewHolder.groupTextView.setCompoundDrawablesWithIntrinsicBounds(viewGroup.getContext().getResources().getDrawable(R.mipmap.icon_top_arrow),null,null,null);
}
} else {
groupViewHolder.groupTextView.setCompoundDrawablesWithIntrinsicBounds(null,null,null,null);
}
return concertView;
}
关键代码if (childItems[parentPosition].length > 1)这个判断
步骤4:代码中使用
expandableListView = findViewById(R.id.expandable_listview);
String[] groupItems = {" 查看定位信息", " 查看方向信息", "界面设置", "标记点功能", "查看功能", "离线地图", "关于我们"};
String[][] childItems = {{" 查看定位信息"},
{" 查看方向信息"},
{" 界面设置"},
{" 添加标记点", " 删除标记点", " 擦除轨迹"},
{" 查看历史轨迹", " 删除历史轨迹"},
{" 离线地图"},
{" 关于我们"}};
MyExpandableListViewAdapter adapter = new MyExpandableListViewAdapter(MainActivity.this, groupItems, childItems);
expandableListView.setAdapter(adapter);
办法是人想出来。。
网友评论