setAnchorView无法使用Recycler视图

时间:2017-12-08 11:24:37

标签: android android-recyclerview anchor-view

我正在努力建立一个音乐播放器。

我做了所需的一切,工作顺利,但我似乎无法看到我的MediaController控件。

声明: private MusicController musicController;

public class MusicController extends MediaController {
    public MusicController(Context context) {
        super(context);
    }

    @Override
    public void hide() {

    }
}

MainActivity.java

musicController.setMediaPlayer(this);
musicController.setAnchorView(findViewById(R.id.my_recycler_view));
musicController.setEnabled(true);

mainactivity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:background="#FF330000"
    android:layout_height="match_parent"
    android:id="@+id/recycler_parent_view"
    >
    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

enter image description here

我添加了截图。

这可能是什么问题?

MainActivity.java

MusicService.java

MusicController.java

MyAdaptor.java

我已经包含了可能很重要的每个文件。请帮我看看问题。谢谢。

1 个答案:

答案 0 :(得分:0)

我看到只有在点击一些事件后才会调用musicController.show(0);。 您是否应该在设置anchorView后立即调用它?

来自文档

  

void show(int timeout)

     

在屏幕上显示控制器。它会在“超时”毫秒不活动后自动消失。

只试用musicController.show();

修改

我看到你覆盖了MusicController.hide()方法,因此在超时期限后不应删除它,但在我看来你设置anchorView时还没有显示它

<强>更新

musicController.setMediaPlayer(this);
musicController.setAnchorView(findViewById(R.id.my_recycler_view));
musicController.setEnabled(true);
new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            musicController.show();
        }
    }, 5000);

我运行了你的代码,我可以在应用延迟后显示控制器。也许你应该在你的服务连接后显示它...不确定这一点,但至少你可以尝试这个代码,然后改进它。