我有listview存储一个人的通信历史.我在listview中有一个标题,它充当带有编辑文本和发送按钮的消息编辑器.当用户键入内容并按发送按钮时,消息将添加到通信列表中,编辑器将变为空.
我想要的是当用户按下发送按钮时,编辑器应该变为不可见,并且应该将项目添加到列表视图中.之后,编辑应该逐渐从顶部开始,让人感觉它会移动下面的项目.
我已经在标题上实现了一个翻译动画,但它的作用是通过向下推动项目然后逐渐填充我不想要的空间来为它创造空间.
我使用了这个问题中解释的负边距技巧, 但它对我不起作用.因为我们不能使用布局参数,其他的AbsListView.LayoutParam用于标题.我尝试设置其他参数,但动画它给我ClassCastException.我跟踪了异常,并且由于在ListView中编写的代码,他们试图在clearRecycledState()方法中使用AbsListView.LayoutParams来编译这些参数.
或者有没有办法在listview-header上应用支持边距的布局参数.
代码
public class PageListView extends ListView {
private Application app;
private CommListAdapter listAdapter;
private MessageEditorHeader messageEditorHeader;
private MessageItemLongClick mInterface;
private Handler handler;
public ProfilePageListView(Application app, MessageItemLongClick mInterface) {
super(app);
this.app = app;
this.mInterface = mInterface;
this.handler = new Handler();
setupView();
}
public void applyData(ProfileData data){
listAdapter.applyData(data.getUser());
// some other business logic
}
private void setupView() {
messageEditorHeader = new MessageEditorHeader(app);
addHeaderView(messageEditorHeader);
listAdapter = new CommListAdapter(app, mInterface);
setAdapter(listAdapter);
setDivider(null);
setScrollingCacheEnabled(false);
tAnimation = new …Run Code Online (Sandbox Code Playgroud) 我有一个主要活动A.有两种情况
1)启动B. B启动模式singleTask并使用FLAG_ACTIVITY_NEW_TASK启动.现在我在B中有一个菜单选项,它执行删除操作并启动活动A.
2)A启动B,它启动C它还包含执行delet opereation的菜单选项.
我希望A开始在两个场景中清除堆栈,但属于另一个任务的活动仍然存在于那里我被卡住有一种方法来清除堆栈.