Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Android 可编辑文本单击即可查看_Android_Android Edittext_Textview - Fatal编程技术网

Android 可编辑文本单击即可查看

Android 可编辑文本单击即可查看,android,android-edittext,textview,Android,Android Edittext,Textview,我现在有一个带有文本视图的屏幕,我想在点击该屏幕时使其可编辑 我尝试了一种使用edittext作为透明背景的解决方案,但最初它会显示光标,并且单击无法正确识别,如果我在xml中将focusbaleintouchmode设置为false,则无法获得焦点。但有一些原因表明,单击无法按预期正常工作。首先,这种方法正确吗 预期的结果是,一旦用户单击textview,它就应该存在。一旦用户在其外部单击,它应该是可编辑的。它应该是不可编辑的。任何示例代码都会对我有很大帮助。对不起,我的英语太差了 提前谢谢

我现在有一个带有文本视图的屏幕,我想在点击该屏幕时使其可编辑

我尝试了一种使用edittext作为透明背景的解决方案,但最初它会显示光标,并且单击无法正确识别,如果我在xml中将focusbaleintouchmode设置为false,则无法获得焦点。但有一些原因表明,单击无法按预期正常工作。首先,这种方法正确吗

预期的结果是,一旦用户单击textview,它就应该存在。一旦用户在其外部单击,它应该是可编辑的。它应该是不可编辑的。任何示例代码都会对我有很大帮助。对不起,我的英语太差了

提前谢谢

最后,我使用下面的代码得到了一个解决方案 在xml编辑文本中,我将foucasbletouchmode设置为false,这使得单击在onclick中正常工作

        et.setFocusable(true);
        et.setEnabled(true);

        et.setFocusableInTouchMode(true);
        et.requestFocus();
失去焦点

        et.setFocusable(false);
        et.setClickable(true);
        et.clearFocus();

您可以使用以下代码:

private makeEditable(boolean isEditable,EditText et){
    if(isEditable){
        et.setBackgroundDrawable("Give the textbox background here");//You can store it in some variable and use it over here while making non editable.
        et.setFocusable(true);
        et.setEnabled(true);
        et.setClickable(true);
        et.setFocusableInTouchMode(true);
        et.setKeyListener("Set edit text key listener here"); //You can store it in some variable and use it over here while making non editable.
    }else{
        et.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
        et.setFocusable(false);
        et.setClickable(false);
        et.setFocusableInTouchMode(false);
        et.setEnabled(false);
        et.setKeyListener(null);
    }
}

感谢您的快速回复,但我的线性布局无法识别点击事件。首先,我的线性布局没有正确剪裁,因为有三个子元素(textview、edittext、view)我将clicklistener添加到线性布局中,因为我必须将代码放置在线性布局中。我猜edittext位于线性布局中。单击事件以气泡形式发送给父级。因此,如果您在编辑文本时将clickable设置为true,它将捕获单击事件并将其冒泡到其父级,即线性布局。尝试..实际问题是将SetFocusableInTouchMode设置为true。我了解到,对于edittext,第一次单击将聚焦edittext,第二次单击将实际触发click事件。根据提交的代码,我们强制setfocusabletouchmode设置为true意味着每单击一秒,它将捕获事件,并且不会按预期工作:(您能告诉我如何强制删除edittext的焦点吗?我的意思是,如果不使用setfocusable或setfocusabletouchmode,则使其不可编辑,因为它会影响单击事件。)