【问题标题】:Enabled copy on disabled EditText and explain weird behaviour of android editText在禁用的 EditText 上启用复制并解释 android editText 的奇怪行为
【发布时间】:2015-05-21 07:47:52
【问题描述】:

我的问题是: 是否可以从禁用的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 显示 onClick() 和 onLongClick() 事件的真/真。 但是,如果我尝试单击或长按禁用的 editText,则不会触发任何事件..

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

提前谢谢你

【问题讨论】:

  • ...它不是重复的...我正在尝试从 editText 启用复制功能,不要禁用该线程中指出的...请在回答之前仔细阅读问题。 ..

标签: android android-edittext copy disabled-input


【解决方案1】:

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

您可以按照Paul Chernenko 的回答进行操作,以禁用输入并使文本保持可选状态。也可以进行用户交互(单击和长按)。

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

【讨论】:

  • 感谢 Mllos。奇怪的行为来自测试 isClickable() ,然后我无法触发 onClick 事件......但也许这是我的个人观点正如你所指出的,我能做的最好的事情就是为 editText 设置自定义样式,我没有我想没有其他解决方案..那么如何设置这样一个editText的样式以显示为禁用的,保持复制功能?
  • 您可以解释“奇怪”的行为,例如“视图是可点击的,但如果它已启用”。 enable 属性比可点击属性高一级,并且具有优先级。很高兴为您提供帮助。
【解决方案2】:

尝试添加到 xml

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

并且不要禁用 EditText

【讨论】:

  • 试过了,但没有任何改变。我将使用此代码更新问题。谢谢 ! ...我需要禁用 editText mate...这是我的问题...
  • @vince46 但也无法在那里输入内容,您可以创建一些侦听器以防止将任何内容粘贴到您的 EditText
  • -我需要禁用editText,因为我已经在之前和现在在其他一些事件之后放置了一些内容我用代码显示它-我需要将editText显示为禁用样式要求和不让用户更改内容——editText的内容需要用户复制用于其他目的
猜你喜欢
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多