自动隐藏工具栏不会再出现在新片段上

时间:2017-03-31 11:05:34

标签: android fragment toolbar android-transitions appcompatactivity

我有一个单活动应用程序,实现(到目前为止)三个不同的片段:

MainActivity - 负责切片之间的切换 HomeFragment - 申请的主屏幕
TasksFragment - 包括带有CardView的RecyclerView和垂直滚动时自动隐藏工具栏 AssesmentFragment -

(主要)问题:
在TasksFragment中,当滚动到RecyclerView底部后隐藏工具栏时,按下CardView上的Button并创建AssessmentFragment并滑入。

  • 工具栏现在隐藏在新的AssessmentFragment中(因为RecyclerView中的自动隐藏工具栏)
  • 在quickfix 之后(见下文)后退按钮是无法按下的!

我可怕的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滚动时隐藏的工具栏,当更改为新片段时。当然有人会有类似的问题!

如果需要,我当然会提供更多代码段!感谢。

1 个答案:

答案 0 :(得分:0)

通过添加

修复
toolbar.animate().translationY(toolbar.getTop()).setInterpolator(new AccelerateInterpolator()).start();

MainActivity的{​​{1}}:

taskToAssessment()