Android 自定义 EditText 在 ICS 中不显示光标

标签 android android-edittext

我的应用程序中有一个 EditText,它只接收来 self 放置在屏幕上的按钮的输入。

为了避免出现软键盘,我有一个自定义的 EditText 类,如下所示:

public class CustomEditText extends EditText {

    public CustomEditText(Context context) {         
        super(context);
}

    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    // Disables Keyboard;
    public boolean onCheckIsTextEditor() {
        return false;
    }   

}

这成功地阻止了键盘的出现,但是在 ICS 中,这种方法也阻止了光标的出现。

setCursorVisible(true) 没有任何效果。

我尝试过其他方法来隐藏软键盘,例如使用 android:editable="false".setKeyListener(null); 但都没有这些解决方案在我的测试中一直有效。键盘始终出现。

那么,有没有办法在 ICS 中返回光标,同时保持 onCheckIsTextEditor 覆盖不变?

最佳答案

你为什么不尝试像这样禁用软键盘

PINLockactivity.java

    //text field for input sequrity pin
    txtPin=(EditText) findViewById(R.id.txtpin);
    txtPin.setInputType(
      InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_PASSWORD);
    txtPin.setSelection(txtPin.getText().length());
    txtPin.setTextSize(22);
    txtPin.setSingleLine(true);


    //disable keypad
    txtPin.setOnTouchListener(new OnTouchListener(){
        @Override
        public boolean onTouch(View v, MotionEvent event) {

              int inType = txtPin.getInputType(); // backup the input type
              txtPin.setInputType(InputType.TYPE_NULL); // disable soft input
              txtPin.onTouchEvent(event); // call native handler
              txtPin.setInputType(inType); // restore input type
                return true; // consume touch even
        }
        });

对于这个 EditText 字段

xml代码为

<EditText android:layout_width="wrap_content" 
            android:id="@+id/txtpin"  
            android:maxLength="4" 
            android:layout_height="37dp" 
            android:gravity="center_horizontal" 
            android:longClickable="false" 
            android:padding="2dp"

            android:inputType="textPassword|number" 
            android:password="true" 
            android:background="@drawable/edittext_shadow" 
            android:layout_weight="0.98" 
            android:layout_marginLeft="15dp">
                <requestFocus></requestFocus>
   </EditText>

我用光标输入安全 PIN 时效果很好。

我从按钮而不是键盘获取输入。

关于Android 自定义 EditText 在 ICS 中不显示光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9977663/

相关文章:

android - 移动 Android Studio 项目导致错误

android - 如何创建 WorkerParameters

listview中的Android edittext失去了对调用notifydatachanged的关注

java - 检查字符串是否太大而无法放入 TextView

android - EditText背景基线颜色变化基于其在android中的焦点

android - 库存短信应用程序包名称是什么?

java - 有没有办法向移动提供商发出 * 命令来查询 Android 应用程序中的余额、剩余分钟数等信息?

android - 生成对称 key 并存储在 android keystore 中

android - 编辑文本和搜索按钮缩小并越界

java - 无法从三个 EditText 获取结果?