我正在使用https://github.com/diegocarloslima/FloatingGroupExpandableListView,我在列表视图中有自定义的行但是当我在子视图上浮动时我无法将标题添加到标题中,当它回到原位时,阴影应该会消失。如何制作该功能适用于当前代码。我非常感谢任何帮助。谢谢你。
SampleActivity
package com.diegocarloslima.fgelv.sample;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView;
import com.diegocarloslima.fgelv.lib.WrapperExpandableListAdapter;
public class SampleActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sample_activity);
final FloatingGroupExpandableListView list = (FloatingGroupExpandableListView) findViewById(R.id.sample_activity_list);
final LayoutInflater inflater = getLayoutInflater();
final View header = inflater.inflate(R.layout.sample_activity_list_header, list, false);
list.addHeaderView(header);
final View footer = inflater.inflate(R.layout.sample_activity_list_footer, list, false);
footer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/diegocarloslima/FloatingGroupExpandableListView"));
startActivity(intent);
}
});
list.addFooterView(footer);
// Even though the child divider has already been set on the layout file, we have to set it again here
// This prevents a bug where the background turns to the color of the child divider when the list is expanded
list.setChildDivider(new ColorDrawable(Color.BLACK));
final SampleAdapter adapter = new SampleAdapter(this);
final WrapperExpandableListAdapter wrapperAdapter = new WrapperExpandableListAdapter(adapter);
list.setAdapter(wrapperAdapter);
for(int i = 0; i < wrapperAdapter.getGroupCount(); i++) {
list.expandGroup(i);
}
list.setOnScrollFloatingGroupListener(new FloatingGroupExpandableListView.OnScrollFloatingGroupListener() {
@Override
public void onScrollFloatingGroupListener(View floatingGroupView, int scrollY) {
float interpolation = - scrollY / (float) floatingGroupView.getHeight();
// Changing from RGB(162,201,85) to RGB(255,255,255)
final int greenToWhiteRed = (int) (162 + 93 * interpolation);
final int greenToWhiteGreen = (int) (201 + 54 * interpolation);
final int greenToWhiteBlue = (int) (85 + 170 * interpolation);
final int greenToWhiteColor = Color.argb(255, greenToWhiteRed, greenToWhiteGreen, greenToWhiteBlue);
// Changing from RGB(255,255,255) to RGB(0,0,0)
final int whiteToBlackRed = (int) (255 - 255 * interpolation);
final int whiteToBlackGreen = (int) (255 - 255 * interpolation);
final int whiteToBlackBlue = (int) (255 - 255 * interpolation);
final int whiteToBlackColor = Color.argb(255, whiteToBlackRed, whiteToBlackGreen, whiteToBlackBlue);
final ImageView image = (ImageView) floatingGroupView.findViewById(R.id.sample_activity_list_group_item_image);
image.setBackgroundColor(greenToWhiteColor);
final Drawable imageDrawable = image.getDrawable().mutate();
imageDrawable.setColorFilter(whiteToBlackColor, PorterDuff.Mode.SRC_ATOP);
final View background = floatingGroupView.findViewById(R.id.sample_activity_list_group_item_background);
background.setBackgroundColor(greenToWhiteColor);
final TextView text = (TextView) floatingGroupView.findViewById(R.id.sample_activity_list_group_item_text);
text.setTextColor(whiteToBlackColor);
final ImageView expanded = (ImageView) floatingGroupView.findViewById(R.id.sample_activity_list_group_expanded_image);
final Drawable expandedDrawable = expanded.getDrawable().mutate();
expandedDrawable.setColorFilter(whiteToBlackColor, PorterDuff.Mode.SRC_ATOP);
}
});
}
}
查看SampleAdapter
package com.diegocarloslima.fgelv.sample;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class SampleAdapter extends BaseExpandableListAdapter {
private final Context mContext;
private final LayoutInflater mLayoutInflater;
private final String[] mGroups = {
"Cupcake",
"Donut",
"Eclair",
"Froyo",
"Gingerbread",
"Honeycomb",
"Ice Cream Sandwich",
"Jelly Bean",
"KitKat"
};
private final int[] mGroupDrawables = {
R.drawable.cupcake,
R.drawable.donut,
R.drawable.eclair,
R.drawable.froyo,
R.drawable.gingerbread,
R.drawable.honeycomb,
R.drawable.ice_cream_sandwich,
R.drawable.jelly_bean,
R.drawable.kitkat
};
private final String[][] mChilds = {
{"1.5"},
{"1.6"},
{"2.0","2.0.1","2.1"},
{"2.2","2.2.1","2.2.2","2.2.3"},
{"2.3","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7"},
{"3.0","3.1","3.2","3.2.1","3.2.2","3.2.3","3.2.4","3.2.5","3.2.6"},
{"4.0", "4.0.1", "4.0.2", "4.0.3", "4.0.4"},
{"4.1", "4.1.1", "4.1.2", "4.2", "4.2.1", "4.2.2", "4.3", "4.3.1"},
{"4.4"}
};
private final String[][] mChilds2 = {
{"1.5"},
{"1.6"},
{"2.0","2.0.1","2.1"},
{"2.2","2.2.1","2.2.2","2.2.3"},
{"2.3","2.3.1","2.3.2","2.3.3","2.3.4","2.3.5","2.3.6","2.3.7"},
{"3.0","3.1","3.2","3.2.1","3.2.2","3.2.3","3.2.4","3.2.5","3.2.6"},
{"4.0", "4.0.1", "4.0.2", "4.0.3", "4.0.4"},
{"4.1", "4.1.1", "4.1.2", "4.2", "4.2.1", "4.2.2", "4.3", "4.3.1"},
{"4.4"}
};
public SampleAdapter(Context context) {
mContext = context;
mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getGroupCount() {
return mGroups.length;
}
@Override
public Object getGroup(int groupPosition) {
return mGroups[groupPosition];
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.sample_activity_list_group_item, parent, false);
}
final ImageView image = (ImageView) convertView.findViewById(R.id.sample_activity_list_group_item_image);
image.setImageResource(mGroupDrawables[groupPosition]);
final TextView text = (TextView) convertView.findViewById(R.id.sample_activity_list_group_item_text);
text.setText(mGroups[groupPosition]);
final ImageView expandedImage = (ImageView) convertView.findViewById(R.id.sample_activity_list_group_expanded_image);
final int resId = isExpanded ? R.drawable.minus : R.drawable.plus;
expandedImage.setImageResource(resId);
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
return mChilds[groupPosition].length;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return mChilds[groupPosition][childPosition];
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
if(convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.sample_activity_list_child_item, parent, false);
}
final TextView text = (TextView) convertView.findViewById(R.id.sample_activity_list_child_item_text);
text.setText(mChilds[groupPosition][childPosition]);
final TextView text2 = (TextView) convertView.findViewById(R.id.textView1);
text2.setText(mChilds2[groupPosition][childPosition]);
return convertView;
}
@Override
public boolean hasStableIds() {
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return false;
}
}
Group_item.xml
<?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="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/sample_activity_list_group_item_image"
android:layout_width="66dp"
android:layout_height="66dp"
android:layout_gravity="center_vertical"
android:background="#FFA2C955"
android:padding="3dp" />
<RelativeLayout
android:id="@+id/sample_activity_list_group_item_background"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:background="#FFA2C955"
android:orientation="horizontal" >
<TextView
android:id="@+id/sample_activity_list_group_item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="20dp"
android:textColor="#FFFFFFFF"
android:textSize="20sp" />
<ImageView
android:id="@+id/sample_activity_list_group_expanded_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="20dp" />
</RelativeLayout>
</LinearLayout>
sample_Activity.xml
<?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"
android:background="#FFEDEDED"
android:orientation="vertical" >
<com.diegocarloslima.fgelv.lib.FloatingGroupExpandableListView
android:id="@+id/sample_activity_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:cacheColorHint="@android:color/transparent"
android:childDivider="#FF000000"
android:divider="#FF000000"
android:dividerHeight="1dp"
android:paddingLeft="10dp"
android:paddingTop="10dp" />
</LinearLayout>