2017-10-17 79 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