【发布时间】:2017-03-31 11:05:33
【问题描述】:
我有一个单活动应用程序,它实现了(到目前为止)三个不同的片段:
MainActivity - 负责在片段之间切换 HomeFragment - 应用程序主屏幕 TasksFragment - 包括 RecyclerView 和 CardView 以及在垂直滚动时自动隐藏工具栏
AssesmentFragment -
(主要)问题:
在TasksFragment中,当Toolbar在滚动到RecyclerView底部后被隐藏时,CardView上的Button被按下,AssessmentFragment被创建并滑入。
- 工具栏现在隐藏在新的 AssessmentFragment 中(因为 RecyclerView 中的自动隐藏工具栏)
- 快速修复后(见下文)后退按钮无法按下!
我糟糕的快速修复:
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();
}
一开始看起来不错,但正如您所见,在新的 Fragment 中无法按下后退按钮,而且当返回到上一个 Fragment 时,工具栏现在处于完全错误的位置。
有没有人知道如何改进这一点?我想:让工具栏随时可用,并在隐藏时重新出现。必须有更好的方法来做到这一点。当更改为新片段时,我希望看到一些替代方法来处理从 recyclerview 滚动时隐藏的工具栏。肯定有人会遇到类似的问题!
如果需要,我当然会提供更多的代码 sn-ps!谢谢。
【问题讨论】:
-
这些片段的任何代码?
-
添加了@AbhishekVAshok
-
能否请您发布您的片段的xml,其中包含recyclerview?
-
添加,@FerdousAhamed :)
标签: android fragment toolbar android-transitions appcompatactivity