2017-10-17 73 views
1

在使用Turbolinks 5的Android上,我没有获得经典的Turbolinks转换(没有任何中间白页并且顶部有水平进度条)。所以我想我需要我自己progressView,但我可能是错在Android Turbolinks上,如何创建自定义progressView以替换默认微调器?

我在MainActivity.java

 progressView = new ProgressBar(turbolinksView.getContext()); 
     TurbolinksSession.getDefault(this) 
       .activity(this) 
       .adapter(this) 
       .view(turbolinksView) 
       .progressView(progressView, R.id.indeterminateBar, 300) 
       .visit(location); 

有这个和这个,我activity_main.xml中

<ProgressBar 
    android:id="@+id/indeterminateBar" 
    android:layout_width="wrap_content" 
    style="@android:style/Widget.ProgressBar.Horizontal" 
    android:layout_height="wrap_content" 
    /> 

gradle设置为

compileSdkVersion 26 
minSdkVersion 19 
targetSdkVersion 22 

当我运行上面我得到IllegalArgumentException "A progress indicator view must be provided in your custom progressView."所以我试图

.progressView(progressView, progressView.getId(), 300) 

,但我仍然得到IllegalArgumentException "A progress indicator view must be provided in your custom progressView."

显然我不能实例正确progressView,我的问题是什么我该怎么办获得/创建合适的progressView ??

道歉提前为跨从Turbolinks-Android张贴问题我张贴在这里的唯一原因也就是我一直停留在好几天

回答

1

这是here。你的progressView应该是一些布局,如FrameLayout,它必须包含R.id.indeterminateBar里面。因此,这将是这样的:

<FrameLayout 
    android:id="@+id/progressView" 
    android:width="match_parent" 
    android:height="match_parent" 
    android:background="#FFFFFF"> 
    <ProgressBar 
     android:id="@+id/indeterminateBar" 
     android:layout_width="wrap_content" 
     style="@android:style/Widget.ProgressBar.Horizontal" 
     android:layout_height="wrap_content" /> 
<FrameLayout/> 
3

我被检查Turbolinks-的Android库和我注意到,此异常的原因可能是因为你的progressView对象没有R.id.indeterminateBar作为一个子视图。

长话短说,你可以试试:

activity_main.xml中

<FrameLayout 
    android:id="@+id/frameLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <ProgressBar 
     android:id="@+id/indeterminateBar" 
     style="@android:style/Widget.ProgressBar.Horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:indeterminate="true"/> 
</FrameLayout> 

MainActivity.java

View progressView = (View) findViewById(R.id.frameLayout); 
TurbolinksSession.getDefault(this) 
    .activity(this) 
    .adapter(this) 
    .view(turbolinksView) 
    .progressView(progressView, R.id.indeterminateBar, 300) 
    .visit(location); 
+0

这一工作的感谢。 – daya