2017-05-09 23 views
0

我一直在尝试很多不同的方法来实现在片段转换过程中适当的进度微调框。事情是这样的:实现不确定微调框的最佳实践

enter image description here

,我遇到的主要,首要的问题是,当微调消失,(旋转的)背景变透明仍在显示旧片段。我尝试了一些不幸的事情,而且我觉得我已经没有选择余地了。如果任何人有办法,他们知道如何干净地做到这一点,请让我知道。我也想保持我使用add的片段,而不是replace我使用的是DrawerLayout的方式,这是我的布局XML:

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:openDrawer="start"> 

<FrameLayout 
    android:id="@+id/main_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.citychurchtulsa.cc.citychurchapp.MainActivity"/> 

<!--Only holds progress bar, main container will be for fragment display!!!--> 
<RelativeLayout 
    android:id="@+id/relative_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 

    <ViewStub 
     android:id="@+id/loadSpinner" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inflatedId="@+id/subView" 
     android:layout="@layout/progress_spinner"/> 

</RelativeLayout> 


<!-- Side navigation drawer UI --> 
<ExpandableListView 
    android:id="@+id/nav_view" 
    android:layout_width="@dimen/nav_drawer_width" 
    android:layout_height="match_parent" 
    android:layout_gravity="left|start" 
    android:background="@color/white" 
    android:divider="@color/colorPrimary" 
    android:dividerHeight="@dimen/divider_height" 
    android:groupIndicator="@android:color/transparent" 
    android:indicatorLeft="? 
android:attr/expandableListPreferredItemIndicatorLeft"/> 

</android.support.v4.widget.DrawerLayout> 

这是我曾尝试:

  • ProgressBar放在RelativeLayout中,然后在需要时将背景设置为和RelativeLayout背景设置为某种颜色,并在我不需要时关闭背景和将背景设置为透明。在扩展片段类外部完成。

  • 同上,但是在扩展片段类中完成。在这里尝试了两种不同的方法。在一次尝试中,我将项目隐藏在onViewCreated中,另一项隐藏在onStart中。

  • 创建我用,就像我承诺就像我的其他片段,然后回去通过所需的片段

  • 使用postDelayed处理程序提交一个空的片段,但我不一定喜欢既然所有设备都不同

不管怎样,我觉得我已经尝试更多,但我的头顶部,我想不出别的。我非常感谢任何帮助。

这里是我的显示/隐藏微调的代码,我一直在尝试使用:

public void enableLoadSpinner(boolean set){ 
    if(set) 
    { 
     mainContainer.setVisibility(View.GONE); 
     loadSpinner.setVisibility(View.VISIBLE); 
     relativeLayout.setBackgroundResource(R.color.colorSecondary); 
    } 
    else 
    { 
     mainContainer.setVisibility(View.VISIBLE); 
     loadSpinner.setVisibility(View.GONE); 
     relativeLayout.setBackgroundResource(android.R.color.transparent); 
    } 
} 

回答

0

好吧,我想通了这个问题!关于ProgressBarFragmentTransaction的观点存在问题!!!两者之间发生了某种奇怪的交互,所以我删除了FragmentTransaction,并使用自定义动画使ProgressBar消失。