如何使Edittext不可点击

6

我希望能够通过编程告诉Editext只有在我的指令下才能聚焦,而不允许用户点击所需的那一个。这可行吗?

我尝试过:

android:longClickable="false"
android:clickable="false"
但是两种方法都没有起作用。
由于某些原因,有人认为以下解决方案可以解决我的问题,但那个人试图使编辑文本不可编辑,而我只是想使编辑文本无法通过单击聚焦。
参考链接:EditText not editable

尝试添加 focusable 为 false 然后查看。 - Manohar
1
尝试将 android:focusableandroid:focusableInTouchMode 设置为 false。 - ashkhn
9个回答

8

尝试使用

    android:focusable="false"
    android:focusableInTouchMode="false"

5
我遇到了同样的问题,并通过使用以下方法解决了它:
.setEnabled(false) and .setClickable(false)

因此,请使用以下代码:

.setEnabled(false);
.setClickable(false);

2
它仍然从父级窃取点击,因此即使它没有执行任何操作,在技术上它仍然是可点击的。 - bio007

1

我不确定你是否得到了答案,但我必须做同样的事情,尽管这可能不是简洁明了的方法,但我知道它有效:

首先将keyListener设置为null:

myEditText.setKeyListener(null);

接下来,为EditText设置OnTouch监听器以执行您想要的任何操作:

myEditText.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if(motionEvent.getAction() == MotionEvent.ACTION_UP){
                    //Do whatever action you need to do here. 
                }
                return false;
            }
});

从那里开始,您只需将操作插入到OnTouch监听器ACTION_UP操作标记中即可。在我的情况下,我需要弹出一个带有列表视图的对话框供他们选择,然后将相应的文本设置到EditText中。

希望这可以帮助到您。


1

编程方式

我也遇到了同样的问题,并通过使用以下代码解决:

.setEnabled(false), .setClickable(false) and .setFocuseable(false)

所以在你的代码中使用这个:
et.setEnabled(false);
et.setClickable(false);
et.setFocuseable(false);

使用 XML。
android:focusable="false"

0
editText.isEnabled = false // makes it`s color grey
editText.setTextColor(Color.parseColor("#DE000000")) //change color if needed

0

尝试使用这段代码

EditText et = (EditText) findViewById(R.id.your_edit_text);
et.setFocusable(false);
et.setClickable(true);

它不允许以编程方式进行更改。 - Adam Katz

0

EditText 的直接父控件应该夺取焦点,例如:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="beforeDescendants"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="enter.." />
</LinearLayout>

0
也许你需要使用这行代码
        android:inputType="none"

在你的XML中,这行代码将阻止键盘显示。

-1
在 XML 文件中尝试使用以下代码 -
    android:clickable="false"
    android:focusableInTouchMode="true"

在EditText上使用它。我还没有尝试过,但希望它能正常工作。


什么也没发生,我仍然可以点击更改焦点。 - Adam Katz
更改为 focusableInTouchMode="false" - Nimitz14

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接