我正在创建一个简单的计算器应用程序,它有一个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时,系统键盘会弹出。
有没有办法在光标可见时保持系统键盘隐藏?
答案 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>