【问题标题】:How to make an Edittext not clickable如何使 Edittext 不可点击
【发布时间】:2017-06-03 18:06:49
【问题描述】:

我想让 Editext 仅在我以可编程方式告诉它时才聚焦,并且不允许用户按下他想要的那个。这可能吗?

我试过了

android:longClickable="false"
android:clickable="false"

但两者都不起作用。

出于某种原因,人们认为以下解决了我的问题,但该人试图使编辑文本不可编辑,而我试图通过单击使编辑文本无法聚焦

EditText not editable

【问题讨论】:

  • 尝试添加focusable false 看看
  • 尝试将android:focusableandroid:focusableInTouchMode设置为false

标签: android android-edittext


【解决方案1】:

试试

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

【讨论】:

    【解决方案2】:

    我遇到了同样的问题并通过使用解决了它:

    .setEnabled(false) and .setClickable(false)
    

    所以将它用于您的代码:

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

    【讨论】:

    • 它仍然从父级窃取点击,所以即使它没有做任何事情,它在技术上仍然是可点击的
    【解决方案3】:

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

    首先将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 中。

    希望对您有所帮助。

    【讨论】:

      【解决方案4】:

      程序化

      我遇到了同样的问题并使用以下方法解决了它:

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

      所以将它用于您的代码:

      et.setEnabled(false);
      et.setClickable(false);
      et.setFocuseable(false);
      

      使用 XML

      android:focusable="false"
      

      【讨论】:

        【解决方案5】:

        试试这段代码

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

        【讨论】:

        • 它不允许以编程方式更改它
        【解决方案6】:

        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>
        

        【讨论】:

          【解决方案7】:
          editText.isEnabled = false // makes it`s color grey
          editText.setTextColor(Color.parseColor("#DE000000")) //change color if needed
          

          【讨论】:

            【解决方案8】:

            在xml文件中尝试使用以下代码-

                android:clickable="false"
                android:focusableInTouchMode="true"
            

            在 EditText 上使用它。我还没有尝试过,但希望它有效。

            【讨论】:

            • 什么都不做,我仍然可以点击改变焦点
            • 更改为focusableInTouchMode="false"
            猜你喜欢
            • 1970-01-01
            • 2020-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多