首页 > 解决方案 > 在 View 上调用 OnRequestFocus() 后,OnClickListener 未触发

问题描述

我有一个在调用 view.requestFocus() 后获得焦点的视图,但是一旦视图获得焦点,它的 onClickListener() 就不会在单击该视图时被调用。

下面是我的代码:这里 btn1 是我的观点

btn1.setFocusable(true);
btn1.requestFocus();

现在,当我的 btn1 获得焦点时,我正在单击该视图,但它什么也没做,它应该显示 btn2。我在 onViewCreated() 中实现了以下回调;

btn1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    videoTitleView.setVisibility(GONE);
                    ageRatingView.setVisibility(GONE);
                  
                }
            }
        });

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.d(TAG, "onClick: newSettings ");
               btn2.setVisibility(View.VISIBLE);
        });

我错过了什么吗?视图有焦点时如何使clickEvent执行?

标签: androidandroid-tv

解决方案


在 onFocusChange 中添加 OnClickListener。

 public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                videoTitleView.setVisibility(GONE);
                ageRatingView.setVisibility(GONE);
                  btn1.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View view) {
                 Log.d(TAG, "onClick: newSettings ");
                btn2.setVisibility(View.VISIBLE);
                 });
              
            }

推荐阅读