我有一个单活动应用程序,实现(到目前为止)三个不同的片段:
MainActivity
- 负责切片之间的切换
HomeFragment
- 申请的主屏幕
TasksFragment
- 包括带有CardView的RecyclerView和垂直滚动时自动隐藏工具栏
AssesmentFragment
-
(主要)问题:
在TasksFragment中,当滚动到RecyclerView底部后隐藏工具栏时,按下CardView上的Button并创建AssessmentFragment并滑入。
我可怕的quickfix:
public class TasksAdapter extends
RecyclerView.Adapter<TasksAdapter.ViewHolder> {
(... details omitted ...)
viewHolder.messageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (position) {
case 0:
//http://stackandroid.com/tutorial/custom-dialog-with-user-input/
Log.i("Press", "" + position);
break;
case 1:
Log.i("Press", "" + position);
break;
case 2:
Log.i("Press", "" + position);
MainActivity mainActivity = (MainActivity) mContext;
mainActivity.moveToolbarUp();
mainActivity.taskToAssessment();
break;
}
});
}
MainActivity
public void moveToolbarUp() {
TranslateAnimation anim = new TranslateAnimation(0, 0, -50, 122);
anim.setDuration(400);
toolbar.startAnimation(anim);
anim.setFillAfter(true);
//toolbar.setTranslationY(0);
}
public void taskToAssessment() {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.left_in, R.anim.left_out);
AssessmentFragment af = new AssessmentFragment();
ft.replace(R.id.mainFragment, af);
ft.addToBackStack(null);
ft.commit();
}
一开始看起来还不错,但正如你所看到的那样,backbutton在新片段中不能按下,而且当回到之前的片段时,工具栏现在处于错误的位置。
有没有人有关于如何改进的想法?我想:让工具栏随时可访问,并在隐藏时重新出现。必须有一个更好的方法来做到这一点。我希望看到一些替代方法来处理从recyclerview滚动时隐藏的工具栏,当更改为新片段时。当然有人会有类似的问题!
如果需要,我当然会提供更多代码段!感谢。
答案 0 :(得分:0)
通过添加
修复toolbar.animate().translationY(toolbar.getTop()).setInterpolator(new AccelerateInterpolator()).start();
在MainActivity
的{{1}}:
taskToAssessment()