Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何启用触控编辑文本_Java_Android_Android Edittext - Fatal编程技术网

Java 如何启用触控编辑文本

Java 如何启用触控编辑文本,java,android,android-edittext,Java,Android,Android Edittext,我有一个已禁用的editText,我想在触摸它时启用它 以下是我所做的,但不起作用: if(textmail.isEnabled() == false){ textmail.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { textm

我有一个已禁用的editText,我想在触摸它时启用它

以下是我所做的,但不起作用:

if(textmail.isEnabled() == false){
        textmail.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                textmail.setEnabled(true);
                return true;
            }


        });
    }

我仔细阅读了您的用例您想禁用TextView并想在Touch()上禁用它(如果我错了,请纠正我)

这里有一个解决方案,而不是使用
setEnabled()
,就好像您在编写逻辑的(视图/活动/片段/类)中声明一个全局变量(布尔值)时,不会调用
onTouch()

    //this as global variable
    private boolean isTextViewDisabled=false;


    //place this code on onCreate()
    textmail.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_DOWN ){
             if(isTextViewDisabled){
               return false;
              }
            }
          return true;
        }
    });
根据您的用例,在需要时将isTextViewDisabled设置为
true
false

但是这里的混淆是启用和禁用的条件应该是其他的,而不是
触摸事件
,因为根据您的用例代码应该如下所示:

   //place this code on onCreate()
    textmail.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction()==MotionEvent.ACTION_DOWN ){
             if(isTextViewDisabled){
               isTextViewDisabled=false;
              }
            }
          return true;
        }
    });

除非您解释为什么要禁用textView,否则上面的代码没有多大意义。试试这个,我希望这有帮助

        textmail.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {



       if(textmail.isEnabled() == false){
                textmail.setEnabled(true);
            }  
                return true;
            }


        });

如果禁用编辑文本,它将不会触发事件,即onTouch/onClick。为了解决这个问题,您需要避免使用disable,而是使用clickable<代码>文本邮件。可设置可点击(错误)在onCreate方法中

要使组件看起来像被禁用了一样,还可以使用Alpha值来降低组件的不透明度,使其看起来褪色

textmail.setAlpha(0.5f);
现在它应该回应你的听众

textmail.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        textmail.setClickable(true);
        textmail.setAlpha(1f);
        return false;
    }
});

您面临的问题是什么?您返回的是false,这就是为什么它没有被启用的原因。返回true@Anmol editText未启用,仅当editText已启用时才起作用enabled@AnushaMathur即使使用true nothing Changes,如果视图被禁用,它也不会触发OnTouchListener(),因为它已被禁用。check@Amalnow@Amal很高兴我能帮忙:)