2015-06-24 65 views
3

如果應用程序有一個主題Theme.AppCompat.Light.NoActionBar和在應用程序中使用android.support.v7.widget.Toolbar有什麼方法可以使用ShowcaseView。在執行應用程序時,我得到下面的堆棧跟蹤。請建議...ShowcaseView不工作沒有ActionBar

java.lang.RuntimeException: insertShowcaseViewWithType cannot be used when the theme has no ActionBar 
     at com.github.amlcurran.showcaseview.targets.AppCompatReflector.getHomeButton(AppCompatReflector.java:32) 
     at com.github.amlcurran.showcaseview.targets.AppCompatReflector.getActionBarView(AppCompatReflector.java:20) 
     at com.github.amlcurran.showcaseview.targets.ActionViewTarget.setUp(ActionViewTarget.java:22) 
     at com.github.amlcurran.showcaseview.targets.ActionViewTarget.getPoint(ActionViewTarget.java:29) 
     at com.github.amlcurran.showcaseview.ShowcaseView$1.run(ShowcaseView.java:149) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5312) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 

回答

11

你將不能夠做一個「教程一步」指着一個菜單項目,如果該活動還沒有動作條(這是顯而易見的,爲什麼......你沒有菜單項) 。

如果您想將圓圈置於活動/片段的視圖中,這應該適合您。

ShowcaseView.Builder res = new ShowcaseView.Builder(activity, true) 
       .setTarget(target) 
       .setContentTitle("title") 
       .setContentText("content"); 

其中目標是:

Target target = new ViewTarget(view_id, activity) 
+0

使用你的代碼後,我得到這個錯誤'java.lang.IllegalArgumentException:寬度和高度必須> 0' – kosala

+0

這似乎是一個知道的問題,請看這裏http://stackoverflow.com/questions/25456289/showcaseview -width和 - 高度必須待0。請注意,您的布料已完全裝入。您可能需要添加一個goblal佈局偵聽器才能在加載佈局後啓動教程。 –

8

我通過這段代碼解決了我類似的問題(在片段):

 new ShowcaseView.Builder(getActivity()) 
    .setTarget(new ViewTarget(((View) parentView.findViewById(R.id.link_to_register)))) 
    .setContentTitle("ShowcaseView") 
    .setContentText("This is highlighting the Home button") 
    .hideOnTouchOutside() 
    .build(); 
+0

謝謝!這也適用於我。 – chabislav

1

,如果你想顯示在overflowMenu提示,那麼你可以試試使用ShowCaseView#setTarget(Target t)設置以下目標:

Target = new Target() { 
    @Override 
    public Point getPoint() { 
     int[] location = new int[2]; 
     toolBar.getLocationInWindow(location); 
     int x = location[0] + toolBar.getWidth() - toolBar.getHeight()/2; 
     int y = location[1] + toolBar.getHeight()/2; 
     return new Point(x, y); 
    } 
}; 
0

它看起來像Showcase在Android Studio熱部署功能方面表現不佳(可能是因爲使用了refill)。

當我清理項目,並重新啓動(使用正確的展示生成器後),它工作。