禁用EditText但接收触摸/点击事件

时间:2018-10-22 12:49:19

标签: android android-layout android-edittext

我想在每行中有Recyclerview个视图,其中有EditText个视图。除了第一行,我需要为每一行禁用EditText。我用

holder.edittext.isCursorVisible = false
holder.edittext.isClickable = false
holder.edittext.isFocusable = false
holder.edittext.isFocusableInTouchMode = false

但是,我希望每行的ViewGroup(例如,Linear Layout)可在所有行中单击。然后,我需要在EditText中接收点击事件,并将其传递给ViewGroup,即使EditText被禁用。有可能这样做吗?

1 个答案:

答案 0 :(得分:2)

  

禁用EditText

您可以使用 holder.edittext.isFocusable = false 禁用您的EditText

  

然后,即使EditText被禁用,我也需要在ViewGroup中接收点击事件并将其传递给EditText。有可能这样做吗?

您可以将ClickListener设置为EditText,然后使用performClick()将点击事件传递给ViewGroup

  • performClick ()

    调用此视图的OnClickListener(如果已定义)。执行与点击相关的所有常规操作:报告可访问性事件,播放声音等。

示例代码

public class MainActivity extends AppCompatActivity {


    EditText myEditText;
    LinearLayout rootView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        myEditText = findViewById(R.id.myEditText);
        rootView = findViewById(R.id.rootView);

        myEditText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                rootView.performClick();

            }
        });

        rootView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "Prem", Toast.LENGTH_SHORT).show();
            }
        });
    }

}

编辑

根据您的以下评论即使我将其可聚焦=假,如何在触摸/单击时禁用我的EditText更改颜色?

遵循此答案when selected add border shape for textView and editText ,