【问题标题】:Auto-hided Toolbar does not reappear on new Fragment自动隐藏工具栏不会出现在新片段上
【发布时间】: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


【解决方案1】:

通过添加修复

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

MainActivity's taskToAssessment():

public void taskToAssessment() {
    toolbar.animate().translationY(toolbar.getTop()).setInterpolator(new AccelerateInterpolator()).start();
    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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 2015-09-29
    • 2022-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多