当键盘出现时,Recyclerview onScrolled被调用

时间:2018-05-21 12:29:58

标签: android android-recyclerview

我在活动A中有recyclelerview,用于在滚动时自动播放视频。所以我已将onScrollListener添加到活动A的recyclerview中。一切正常但

  1. 我从活动A

  2. 启动另一个活动B.
  3. 键盘出现在活动B

  4. onScroll方法的reclerview活动A被调用。
  5. 结果视频开始播放在后台的活动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只有一个edittext

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

2 个答案:

答案 0 :(得分:0)

您可以照顾的一些要点:

  1. 在致电onScrollListener致另一个活动B时停止intent
  2. 如果您不想保持向后兼容性,可以在为活动B调用Intent时finish您的活动A.
  3. Stop您处理的过程就像在Activity A goes in backgroundonPauseonStop时播放视频一样。
  4. 希望这有帮助。

答案 1 :(得分:0)

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

<!-- 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>