如何在input type设置为null的情况下使光标可见?

时间:2018-01-05 09:54:09

标签: android android-edittext android-keypad

我正在创建一个简单的计算器应用程序,它有一个Edittext和一些按钮来从用户那里获取输入。

<EditText
    android:id="@+id/editText"
    style="@style/editTextStyle"
    android:text="0"
    android:inputType="none"
    android:textIsSelectable="true" />

以下是java代码。

editText = (EditText) findViewById(R.id.editText);
editText.setInputType(InputType.TYPE_NULL);

我将输入类型设置为null,以便当用户点击edittext时,默认系统键盘保持隐藏状态。但这也使光标不可见。当我在Edittext中插入一些文本并点击它时,光标位置会改变,但光标不可见。

有没有办法让输入类型设置为null的光标可见?

更新

我尝试使用以下代码。

editText = (EditText) findViewById(R.id.editText);
editText.setInputType(InputType.TYPE_NULL);
editText.setRawInputType(InputType.TYPE_CLASS_TEXT);

此解决方案适用于Android版本,直到Nougat。当我点击Edittext时,系统键盘保持隐藏状态,光标可见。但在奥利奥,这个解决方案不起作用。当我点击Editext时,系统键盘会弹出。

有没有办法在光标可见时保持系统键盘隐藏?

3 个答案:

答案 0 :(得分:0)

您应该使用:

editText.setTextIsSelectable(true);

答案 1 :(得分:0)

Activity中使用此功能:
              editText.setFocusable(true);    
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT‌​_INPUT_STATE_ALWAYS_HIDDEN);

答案 2 :(得分:0)

您不需要InputType.TYPE_NULL 在具有编辑文本框的活动的onCreate()中:

    protected void onCreate(Bundle savedInstanceState) {

mAmountText = (EditText) findViewById(R.id.amount);

// This will disable the Soft Keyboard from appearing by default
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

// Provide focus to the Amount box (since it is the top edittext box inside RelativeLayout)
mAmountText.requestFocus();

}

在布局文件中(将其称为note_edit.xml):

<?xml version=”1.0″ encoding=”utf-8″?>

<RelativeLayout
android:id=”@+id/main_layout”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”#ffffffff”
android:descendantFocusability=”beforeDescendants”
android:focusableInTouchMode=”true”
>

<EditText
android:id=”@+id/amount”
android:textColor=”#ff0066ff”
android:numeric=”decimal”
android:gravity=”left”
android:hint=”$0.00″
android:textSize=”48sp”
android:layout_height=”72dp”
android:layout_width=”fill_parent”
android:windowSoftInputMode=”stateHidden”
>
</EditText>

</RelativeLayout>