【问题标题】:ImageView disappear in Sliding up panelImageView 在上滑面板中消失
【发布时间】:2017-04-13 23:36:15
【问题描述】:

我有问题。我有 3 个片段(页面)的 ViewPager。在第一个片段中,我有向上滑动的面板。我使用了来自 GitHub 的这个库。点击here。在该滑动面板的 TitleBar 中,我有 ImageView,如下图所示。 ImageView 在用户打开或关闭上滑面板时发生变化。

我的问题:当我更改片段(移动到另一页)并返回第一页时 ImageVIew 消失。什么原因?!

Fragment1.java:(setPanelSlideListener 在 onViewCreated 方法中,创建视图时立即调用...)

mSlidingUpPanelLayout.setPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
            @Override
            public void onPanelSlide(View panel, float slideOffset) {
                Log.i(TAG, "onPanelSlide, offset " + slideOffset);
            }

            @Override
            public void onPanelCollapsed(View panel) {
                Log.i(TAG, "onPanelCollapsed");
                mImageView.setBackgroundResource(R.drawable.icon_up);
            }

            @Override
            public void onPanelExpanded(View panel) {
                Log.i(TAG, "onPanelExpanded");
                mImageView.setBackgroundResource(R.drawable.icon_down);
                fab.setColorPressed(getResources().getColor(R.color.fab_up_pressed));
            }

            @Override
            public void onPanelAnchored(View panel) {
                Log.i(TAG, "onPanelAnchored");
            }

            @Override
            public void onPanelHidden(View panel) {
                Log.i(TAG, "onPanelHidden");
            }

            @Override
            public void onPanelHiddenExecuted(View panel, Interpolator interpolator, int duration) {
                Log.i(TAG, "onPanelHiddenExecuted");
            }

            @Override
            public void onPanelShownExecuted(View panel, Interpolator interpolator, int duration) {
                Log.i(TAG, "onPanelShownExecuted");
                mImageView.setBackgroundResource(R.drawable.icon_up);
            }

            @Override
            public void onPanelExpandedStateY(View panel, boolean reached) {
                Log.i(TAG, "onPanelExpandedStateY" + (reached ? "reached" : "left"));
            }

            @Override
            public void onPanelCollapsedStateY(View panel, boolean reached) {
                Log.i(TAG, "onPanelCollapsedStateY" + (reached ? "reached" : "left"));
                if (reached) {
          fab.setColorPressed(getResources().getColor(R.color.fab_pressed));
                    mTextView.setTextColor(Color.parseColor("#FFFFFF"));
                }else{
                                        fab.setColorPressed(getResources().getColor(R.color.fab_up_pressed));
                    mTextView.setTextColor(Color.parseColor("#FFFFFF"));
                }
            }

            @Override
            public void onPanelLayout(View panel, SlidingUpPanelLayout.PanelState state) {
                if(state == SlidingUpPanelLayout.PanelState.COLLAPSED){
                    titleBar.setBackgroundColor(Color.parseColor("#03A9F4"));
                    fab.setColorNormal(getResources().getColor(R.color.fab_primary));
                    fab.setColorPressed(getResources().getColor(R.color.fab_pressed));
                    mTextView.setTextColor(Color.parseColor("#FFFFFF"));
                    mImageView.setBackgroundResource(R.drawable.icon_up);
                }
                else if (state == SlidingUpPanelLayout.PanelState.EXPANDED || state == SlidingUpPanelLayout.PanelState.ANCHORED){
                    titleBar.setBackgroundColor(Color.parseColor("#ffff9431"));
                    fab.setColorNormal(getResources().getColor(R.color.fab_up_primary));
                    fab.setColorPressed(getResources().getColor(R.color.fab_up_pressed));
                    mTextView.setTextColor(Color.parseColor("#FFFFFF"));
                    mImageView.setBackgroundResource(R.drawable.icon_down);
                }
            }
        });

感谢您的帮助!需要任何帮助!

【问题讨论】:

    标签: java android android-activity android-fragments android-viewpager


    【解决方案1】:

    我在许多应用程序中都使用了 umano 库。你试过保存它的状态吗?

    请添加以下代码,当您从另一个片段返回时,它会保存您的状态。

    @Override
    protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putBoolean(SAVED_STATE_ACTION_BAR_HIDDEN,
         mLayout.isExpanded());
    }
    

    更新

    public static final String SAVED_STATE_ACTION_BAR_HIDDEN = "saved_state_action_bar_hidden";
    

    根据您使用的库,它可能不是isExpanded(),而是isPanelExpanded()isPaneExpanded()

    请根据这些方法更新它并告诉我。

    如果它没有解决您的问题,请告诉我。

    我愿意帮助你。 享受编码... :)

    【讨论】:

    • 你好@nDroidDev 你好吗?我真的需要帮助!我添加了您的代码,但在 SAVED_STATE_ACTION_BAR_HIDDEN 中出现了一些错误,例如“无法解析方法”,在 isExpanded() 中也出现了同样的错误……我还需要添加什么?
    【解决方案2】:

    使用addPanelSlideListener 代替setPanelSlideListener

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多