如何在工具栏中的媒体路由器图标上使用作品集视图



我最近通过手动设置在我的项目中添加了工具栏 setSupportActionbar(toolbar) .现在我遇到了一个问题,例如我无法在工具栏中获取对媒体路由器按钮的视图引用,因此展示视图不起作用。在媒体路由按钮中显示展示视图是否有任何解决方法?

我的菜单设置如下:

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search"
        android:orderInCategory="200"
        android:title="@string/text_search"
        android:menuCategory="system"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always" />
    <item
        android:id="@+id/media_route_menu_item"
        android:orderInCategory="100"
        android:title="@string/media_route_menu_title"
        app:actionProviderClass="android.support.v7.app.MediaRouteActionProvider"
        app:showAsAction="always" />
    <item
        android:id="@+id/downloads"
        android:orderInCategory="90"
        android:icon="@drawable/ic_actionbar_download"
        android:visible="false"
        app:showAsAction="ifRoom"
        android:title="Downloads"/>
    <item
        android:id="@+id/cancel"
        android:title="Cancel"
        android:visible="false"
        app:showAsAction="never"/>

</menu>

你可以试试这个代码,它对我有用

    Target viewTarget = new Target() {
    @Override
    public Point getPoint() {
        return new ViewTarget(toolbar.findViewById(R.id.media_route_menu_item)).getPoint();
    }
};
sv = new ShowcaseView.Builder(this)
        .setTarget(viewTarget)
        .singleShot(2)
        .setShowcaseEventListener(this)
        .build();

您可以直接获得指向"视图"的指针:

    Menu menu = mToolbar.getMenu();
    View view = menu.findItem(R.id.media_route_menu_item).getActionView();
    if (view != null && view instanceof MediaRouteButton) {
        new ShowcaseView.Builder(this)
                .setTarget(new ViewTarget(view))
                .setContentTitle(R.string.touch_to_cast)
                .build();
    }

如果您使用的是 CCL,则无需引入展示库即可获得此功能。

custom ShowcaseView : 
- First Initialize ShowcaseConfig Object :
  ShowcaseConfig config = new ShowcaseConfig();
- If your Set Custome Text :
        config.setTypeface(tf); 
- set delay between two view
        config.setDelay(500); // half second between each showcase view
- set Content Text and Button Size :
        if (Util.isZhCN()) {
            config.setContentTextSize(24);
            config.setButtonTextSize(22);
        } else {
            config.setContentTextSize(36);
            config.setButtonTextSize(30);
        }

        MaterialShowcaseSequence sequence = new 
  MaterialShowcaseSequence(context, "sequence example");
        sequence.setConfig(config);
        MaterialShowcaseView oneShowcaseView = new MaterialShowcaseView.Builder(context)
                .setTarget(" PUT YOUR TARGEXT VIEW").setContentText(" PUT YOUR CONTENT").build();
        sequence.addSequenceItem(oneShowcaseView);
        sequence.start();

- try this work for me.

最新更新