在禁用的EditText上启用复制并解释android editText的奇怪行为

时间:2015-03-18 13:35:25

标签: android android-edittext copy disabled-input

我的问题是: 是否可以从已禁用的editText启用复制文本功能?

我已尝试使用以下代码测试Android 4.4.2(三星Galaxy Note II)上的行为

EditText _edit;

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

    _edit = (EditText) findViewById(R.id.editDisabled);
    _edit.setText("Text to be copied...");
    _edit.setEnabled(false);

    /* update code with answer below */
    _edit.setInputType(InputType.TYPE_NULL);
    _edit.setTextIsSelectable(true);
    /* end mod */


    Toast.makeText(getApplicationContext(), "onClick enabled: " + (_edit.isClickable() ? true : false) + 
                                        " \n onLongClick enabled: " +  (_edit.isLongClickable() ? true : false) , Toast.LENGTH_LONG).show();


    _edit.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View paramView) {
            Toast.makeText(getApplicationContext(), "onLongClick()!!!", Toast.LENGTH_LONG).show();
            return false;
        }
    });

    _edit.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View paramView) {
            Toast.makeText(getApplicationContext(), "onclick()!!", Toast.LENGTH_LONG).show();

        }
    });
}

当活动打开时,toast()和onLongClick()事件的Toast显示true / true。 但是,如果我尝试单击或长按已禁用的editText,则不会触发任何一个事件..

那么有人能够回答我的问题或解释禁用的editText的奇怪行为吗?

提前谢谢

2 个答案:

答案 0 :(得分:2)

这并不奇怪。禁用视图意味着禁止用户交互,无论视图是否(长)可点击。

您可以按Paul Chernenko接听,禁用输入并保留文字可选。用户交互也是可能的(点击和长按)。

在您的情况下,我假设您在EditText的禁用状态中唯一缺少的是外观为禁用。这可以通过自定义EditText Style来实现,这将是另一个问题。

答案 1 :(得分:1)

尝试添加到xml

 android:inputType="none"
 android:textIsSelectable="true"

不要禁用EditText