Android 键盘出现时调用Recyclerview onScrolled

Android 键盘出现时调用Recyclerview onScrolled,android,android-recyclerview,Android,Android Recyclerview,我在活动A中有recyclerview,用于在滚动条上自动播放视频。因此,我将onScrollListener添加到活动A的recyclerview中 我从活动A启动另一个活动B 键盘出现在活动B上 调用get的活动recyclerview的onScroll方法 因此,视频开始在后台的活动a上播放。你知道怎么阻止吗 以下是这两项活动的代码 活动A private RecyclerView recyclerView; private ExoVideosAdapter exoVideosAdapte

我在活动A中有recyclerview,用于在滚动条上自动播放视频。因此,我将onScrollListener添加到活动A的recyclerview中

  • 我从活动A启动另一个活动B

  • 键盘出现在活动B上

  • 调用get的活动recyclerview的onScroll方法 因此,视频开始在后台的活动a上播放。你知道怎么阻止吗

    以下是这两项活动的代码

    活动A

    private RecyclerView recyclerView;
    private ExoVideosAdapter exoVideosAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn=findViewById(R.id.btnB);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this,secondActivity.class));
            }
        });
        exoVideosAdapter=new ExoVideosAdapter();
        recyclerView=findViewById(R.id.rv);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                Log.d("rvA","onScrollStateChanged");
            }
    
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                Log.d("rvA","onScrolled");
            }
        });
        recyclerView.setAdapter(exoVideosAdapter);
    }
    
    }

    活动B有一个编辑文本

    public class secondActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }}
    

    您可以注意以下几点:

  • 在调用另一个活动B的
    intent
    时,停止您的
    onScrollListener
  • 如果不想保持向后兼容性,可以在调用活动B的Intent时
    完成活动A
  • 停止
    活动A进入后台
    onPause
    onStop
    时,您的处理就像播放视频一样

  • 希望这能有所帮助。

    这种奇怪行为的原因是你的应用程序使用了半透明主题。一旦我删除了半透明标记,它就停止调用后台活动的recyclerview的CrollListener

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowIsTranslucent">true</item>
    </style>
    
    
    @颜色/原色
    @颜色/原色暗
    @颜色/颜色重音
    真的
    
    将活动a和b的代码张贴在此处。为什么要否决投票?是的,我正在管理onScrollListener,将活动a暂停和恢复作为临时解决方案。但这种行为非常奇怪。@jatinrana在活动的onStart()中开始播放视频,并在onPause()和onStop()上停止播放。谢谢,但这只是一种解决方法。这种行为的真正原因是为你的应用程序使用半透明主题。一旦我删除了半透明主题,一切正常。