Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/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
编辑带有可剪切链接的文本,但在用户自行更改之前不可编辑/Kotlin,Android_Android_Kotlin_Hyperlink_Android Edittext - Fatal编程技术网

编辑带有可剪切链接的文本,但在用户自行更改之前不可编辑/Kotlin,Android

编辑带有可剪切链接的文本,但在用户自行更改之前不可编辑/Kotlin,Android,android,kotlin,hyperlink,android-edittext,Android,Kotlin,Hyperlink,Android Edittext,我正在努力改进我的ToDoList应用程序。 我想在lauch将我的EditText设置为不可编辑字段,这样用户就可以使用他在以前使用应用程序时保存的链接。如果用户希望编辑字段以将其保存到数据库中,则可以通过按按钮或双击或其他方式“激活”编辑 这是我的第一个问题,所以我希望我没有违反任何规则 谢谢你的建议 <EditText android:id="@+id/taskDescEV" android:layout_width="0dp" an

我正在努力改进我的ToDoList应用程序。 我想在lauch将我的EditText设置为不可编辑字段,这样用户就可以使用他在以前使用应用程序时保存的链接。如果用户希望编辑字段以将其保存到数据库中,则可以通过按按钮或双击或其他方式“激活”编辑

这是我的第一个问题,所以我希望我没有违反任何规则 谢谢你的建议

 <EditText
        android:id="@+id/taskDescEV"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginBottom="16dp"
        android:autoLink="web"
        android:background="@drawable/task_row_background"
        android:enabled="true"
        android:gravity="start|top"
        android:hint="@string/taskDescTV_hint"
        android:inputType="textMultiLine|text"
        android:linksClickable="true"
        android:paddingStart="12dp"
        android:paddingTop="8dp"
        android:paddingEnd="8dp"
        android:paddingBottom="8dp"
        android:textColor="@color/text_color"
        android:textColorHint="@color/hint_color"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/saveBtn"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/taskNameEV" />


@InternalCoroutinesApi
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    navController = Navigation.findNavController(view)
    taskViewModel = ViewModelProvider(this).get(TaskViewModel::class.java)
    val oldTaskName = args.itemName
    val oldTaskDesc = args.itemDesc
    taskNameEV.requestFocus()
    taskNameEV.setText(oldTaskName)
    taskDescEV.setText(oldTaskDesc)
    showKeyboard()

    taskDescEV.isEnabled = false



    saveBtn.setOnClickListener {

        if (taskNameEV.text.isNotEmpty()) {
            hideKeyboard()
            Handler().postDelayed(
                {
                    val taskNewName = taskNameEV.text.toString().capitalize(Locale.ROOT)
                    val taskNewDesc = taskDescEV.text.toString()
                    val oldTask = Task(oldTaskName, oldTaskDesc)
                    val newTask = Task(taskNewName, taskNewDesc)
                    taskViewModel.edit(oldTask, newTask)



                    navController!!.navigate(R.id.action_editFragment_to_listFragment)
                }, 300
            )


        } else {
            Toast.makeText(activity, "You can't add empty task", Toast.LENGTH_LONG).show()
        }
    }
}

@内部协同程序API
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
navController=Navigation.findNavController(视图)
taskViewModel=ViewModelProvider(this).get(taskViewModel::class.java)
val oldstaskname=args.itemName
val oldstaskdesc=args.itemDesc
taskNameEV.requestFocus()
taskNameEV.setText(旧任务名)
taskDescEV.setText(oldstaskdesc)
showKeyboard()
taskDescEV.isEnabled=false
saveBtn.setOnClickListener{
if(taskNameEV.text.isNotEmpty()){
隐藏板()
Handler().postDelayed(
{
val taskNewName=taskNameEV.text.toString().capitalize(Locale.ROOT)
val taskNewDesc=taskDescEV.text.toString()
val oldTask=Task(oldTaskName,oldTaskDesc)
val newTask=Task(taskNewName,taskNewDesc)
taskViewModel.edit(旧任务、新任务)
导航控制器!!.导航(R.id.action\u editFragment\u到\u listFragment)
}, 300
)
}否则{
Toast.makeText(活动,“您不能添加空任务”,Toast.LENGTH\u LONG.show())
}
}
}

EditText
是一个
视图
。它可以启用或禁用

假设您的
EditText
名称为
EditText

editText.setEnabled(false)
将禁用对其进行编辑

编辑: 将以下内容添加到布局中:

android:autoLink="web"
android:linksClickable="true"

但是当我尝试这样做时,我不能使用link tasksdescev.isEnabled=true tasksdescev.isClickable=true tasksdescev.linksClickable=true tasksdescev.isCursorVisible=false tasksdescev.isFocusable=false文本视图没有问题,但我需要编辑功能。