0

I have two EditTexts in my fragment. Both of them have android:inputType set to numberSigned|numberDecimal, since I wish to input only decimal numbers through them, which may be signed as well.

The issue is that if I completely delete the existing contents of the EditTexts, they simply don't accept digits as inputs, they only accept signs such as - (negative sign) or .(decimal point). So basically the only case when the text in them can be changed is if a digit is already present in there and we append some new digit/symbol.

Here, is a small demo of the problem I am facing:- Issue Demo

I have had a look at these similar issues:-

  1. EditText does not accept digits as input (describes the exact same problem that I'm facing)
  2. EditText is not accepting Numeral input

However, I don't have any wrapping layout/element which implements any method that may be consuming the ENTER event (such as setOnKeyListener or dispatchKeyEvent). Here is the layout file which has these EditTexts and is included in the main layout file of the fragment:-

<?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>

The parent activity of this fragment extends AppCompatActivity and implements View.OnClickListener. Does anyone know what could be consuming the ENTER event and causing this issue ?

Edit:-

I tested on two android devices. This works absolutely fine on the device running Android 8.1. However, on the device with Android 10, the above issue comes up. Also, this issue only comes up with the EditTexts placed inside Fragments. The ones placed directly in the activity layouts work absolutely fine.

4
  • Hi, just use android:inputType="numberDecimal" this will help your concern. Commented Jun 13, 2024 at 6:06
  • @AnkitTale Thanks for your suggestion. I've already tried that, doesn't solve my issue. Plus, I can't use that since I'm bound to accept negative numbers as inputs also. Commented Jun 13, 2024 at 6:08
  • can you try one thing, might be hold negative key for some time as input. Thanks Commented Jun 13, 2024 at 6:11
  • @AnkitTale Thanks again. Doesn't work either. Also, we can't be expecting end users to do the same thing while using the app. Commented Jun 13, 2024 at 6:13

1 Answer 1

1

Ok, so the issue was that I had set android:layout_width to wrap_content for both the EditTexts.

When all the existing content was deleted, the EditTexts shrinked to 0 width, and hence the issue was arising. Still doesn't explain the fact as to why .(decimal point) was getting accepted as an input, but setting the android:layout_width to some fixed value instead of wrap_content worked out for me. Alternatively, setting the android:minWidth attribute can also help.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.