Expandablelistview 组 header 单击时失去焦点
Expandablelistview group header Loses focus when clicked
我有一个一次打开一个组 header 的可扩展列表视图,也就是说,只要我单击一个组 header,我就会关闭之前打开的组 header。每当我第一次单击组 header 时,它的行为都正常,但随后单击组 header 会将单击的组 header 从视图中推到顶部。我怎样才能使组 header 保持在顶部?
list.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@SuppressLint("NewApi")
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
// parent.smoothScrollToPositionFromTop(groupPosition, 0);
parent.setSelectionFromTop(groupPosition,0);
return false;
}
});
list.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if (lastExpandedPosition != -1 && groupPosition != lastExpandedPosition) {
list.collapseGroup(lastExpandedPosition);
}
lastExpandedPosition = groupPosition;
}
});
在您的 onGroupClick() 方法中使用以下代码。一旦我以这种方式解决了。希望对你有所帮助
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
parent.smoothScrollToPositionFromTop(groupPosition, 0);
}
},100);
我有一个一次打开一个组 header 的可扩展列表视图,也就是说,只要我单击一个组 header,我就会关闭之前打开的组 header。每当我第一次单击组 header 时,它的行为都正常,但随后单击组 header 会将单击的组 header 从视图中推到顶部。我怎样才能使组 header 保持在顶部?
list.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@SuppressLint("NewApi")
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
// parent.smoothScrollToPositionFromTop(groupPosition, 0);
parent.setSelectionFromTop(groupPosition,0);
return false;
}
});
list.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if (lastExpandedPosition != -1 && groupPosition != lastExpandedPosition) {
list.collapseGroup(lastExpandedPosition);
}
lastExpandedPosition = groupPosition;
}
});
在您的 onGroupClick() 方法中使用以下代码。一旦我以这种方式解决了。希望对你有所帮助
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
parent.smoothScrollToPositionFromTop(groupPosition, 0);
}
},100);