将textIsSelectable设置为true后,如何将EditText重置为可编辑状态?

时间:2013-10-20 14:40:34

标签: android

当我的应用程序启动时,我在EditText中加载了一些文本,用户无法编辑,直到单击“菜单”并选择“编辑文本”。最初的xml如下所示:

<EditText
    android:id="@+id/myTextBox"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:cursorVisible="true"
    android:gravity="top"
    android:inputType="none"
    android:textIsSelectable="true"
    android:scrollbars="vertical"
    android:maxLines="1"
     />

用户选择“编辑文字”后,如何让它再次编辑?我尝试在代码中执行以下操作:

_mytextBox.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_MULTI_LINE);
_mytextBox.setTextIsSelectable(false);

但是键盘再也没有出现过.. 如果我从xml中删除textIsSelectable并使用android:inputType =“textMultiLine”,它就像我想要的那样工作。

其他信息: 抱歉忘记提及,我不能使用禁用/启用方式,因为我希望用户能够选择里面的任何文本并进行“复制”。此外,禁用它将使文本变暗..这不是我想要的。谢谢!

我希望调用_mytextBox.setTextIsSelectable(false);将一切重置为正常,但它不会......似乎是一个错误?可能与此问题有关:https://code.google.com/p/android/issues/detail?id=27609

4 个答案:

答案 0 :(得分:1)

启用EditText使用

_mytextBox.setEnabled(true);

以及禁用EditText使用

_mytextBox.setEnabled(false);

如果您不想使用上述内容,请在edittext上尝试隐藏/显示键盘

       // Show soft keyboard for the user to enter the value.
       InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
       imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);




        // Hide soft keyboard.
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

答案 1 :(得分:1)

要重置setTextIsSelectable,您只需要将一组EditText属性恢复为原始状态...

这是我开发用于我的应用程序的Utils方法..

private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
    dataTable.Rows[gridResultados.SelectedIndex].SetField(4, 1);
}

private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
{
    dataTable.Rows[gridResultados.SelectedIndex].SetField(4, 2);
}

欢迎你...

答案 2 :(得分:0)

在xml

中初步EditText android:enabled="false"

关于商品onOptionsItemSelected,请修改文字选项,使其成为setEnabled(true)

@Override
    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {
        case R.id.edit_text_option_id:
            editText.setEnabled(true);
                return true;
        default:
            return super.onOptionsItemSelected(item);

        }

    }

答案 3 :(得分:0)

您是否尝试过requestFocus来编辑文本?