java - ImageView在滑动面板中消失

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

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

enter image description here

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

Fragment1.java:(setPanelSlideListener 位于 onViewCreated 方法中,该方法在创建 View 时立即调用...)

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);
                }
            }
        });

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

最佳答案

我在许多应用程序中使用了 umano 库。您是否尝试保存其状态?

请添加以下代码,该代码在您从另一个 fragment 返回时保存了您的状态。

@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()根据您使用的库。

请更新该方法并让我知道。

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

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

关于java - ImageView在滑动面板中消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28304425/

相关文章:

java - 如何检查数组元素是否存在?

java - Android webRTC VideoTrack.addRenderer api 更改

java - 在 android 中将 contentView 设置为 Web View 后返回到 Activity contentView

java - Utils 类中的谓词应该作为常量或静态方法提供?

Java - 注册应用程序的自动启动

java - Hive 表计数通过 java JDBC 驱动程序显示为 0

安卓 ndk(cmake) : 'undefined reference to ` __android_log_write' when using log api in the second jni library

android - Gradle DSL 方法未找到 : 'credentials()'

android - Activity 会运行,但不会显示(Android)?

java - 从 libgdx 项目加载 Activity