我的片段中有两个 EditTexts。它们都将
android:inputType
设置为 numberSigned|numberDecimal
,因为我希望通过它们仅输入十进制数字,也可以带符号。
问题是,如果我完全删除EditTexts的现有内容,它们根本不接受数字作为输入,它们只接受诸如
-
(负号)或.
(小数点)之类的符号。因此,基本上,其中的文本可以更改的唯一情况是其中已经存在数字,并且我们附加一些新的数字/符号。
我看过这些类似的问题:-
但是,我没有任何包装布局/元素来实现任何可能消耗 ENTER 事件的方法(例如
setOnKeyListener
或 dispatchKeyEvent
)。
这是具有这些 EditTexts 的布局文件,并且包含在片段的主布局文件中:-
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rounded_custom_border">
<io.pslab.others.FloatSeekBar
android:id="@+id/seekbar_vertical_offset"
android:layout_width="@dimen/dimen_zero_dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/spinner_channel_select_vertical_offset"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toEndOf="@+id/spinner_channel_select_vertical_offset"
app:layout_constraintTop_toTopOf="parent" />
<io.pslab.others.FloatSeekBar
android:id="@+id/seekbar_horizontal_offset"
android:layout_width="@dimen/dimen_zero_dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toEndOf="@+id/spinner_channel_select_horizontal_offset"
app:layout_constraintTop_toTopOf="@+id/spinner_channel_select_horizontal_offset" />
<Spinner
android:id="@+id/spinner_channel_select_vertical_offset"
android:layout_width="wrap_content"
android:layout_height="@dimen/osc_spinner_height"
android:layout_marginStart="@dimen/osc_cb_margin"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textview_vertical_offset_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/osc_cb_margin"
android:text="@string/unit_volts"
app:layout_constraintBottom_toBottomOf="@+id/spinner_channel_select_vertical_offset"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Spinner
android:id="@+id/spinner_channel_select_horizontal_offset"
android:layout_width="wrap_content"
android:layout_height="@dimen/osc_spinner_height"
android:layout_marginStart="@dimen/osc_cb_margin"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/textview_horizontal_offset_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/osc_cb_margin"
android:text="@string/unit_milliseconds"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/spinner_channel_select_horizontal_offset" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.8" />
<EditText
android:id="@+id/edittext_vertical_offset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:inputType="numberSigned|numberDecimal"
android:imeOptions="actionDone"
android:textAlignment="viewEnd"
android:textAppearance="@android:style/TextAppearance.Material.Small"
app:layout_constraintBottom_toBottomOf="@+id/spinner_channel_select_vertical_offset"
app:layout_constraintEnd_toStartOf="@+id/textview_vertical_offset_unit"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/edittext_horizontal_offset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:inputType="numberSigned|numberDecimal"
android:imeOptions="actionDone"
android:textAlignment="viewEnd"
android:textAppearance="@android:style/TextAppearance.Material.Small"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/textview_horizontal_offset_unit"
app:layout_constraintTop_toTopOf="@+id/spinner_channel_select_horizontal_offset" />
</androidx.constraintlayout.widget.ConstraintLayout>
该片段的父 Activity 扩展了
AppCompatActivity
并实现了 View.OnClickListener
。
有谁知道什么可能会消耗 ENTER 事件并导致此问题?
编辑:-
我在两台 Android 设备上进行了测试。这在运行 Android 8.1 的设备上运行得非常好。然而,在Android 10的设备上,就会出现上述问题。 此外,此问题仅出现在 Fragments 内的 EditTexts 中。直接放置在活动布局中的效果绝对很好。
好的,所以问题是我已将
EditTexts的
android:layout_width
设置为 wrap_content
。
当所有现有内容被删除时,EditTexts缩小为0宽度,因此出现了问题。 仍然没有解释为什么
.
(小数点)被接受为输入,但是将 android:layout_width
设置为某个固定值而不是 wrap_content
对我来说很有效。或者,设置 android:minWidth
属性也有帮助。