当前位置: 首页 > 知识库问答 >
问题:

Android EditText圆形框输入

酆光熙
2023-03-14

我做了很多研究,但没有找到关于这个问题的任何东西。我也不再有一个起点来寻找哪些关键字。

我关心的是创建一个如图中所示的输入字段。用户应该可以在这里简单地输入一个数字代码

应该有一个图书馆吗?

共有1个答案

施知
2023-03-14

嗯,有一些库用于创建这种类型的EditText,比如OtpView和android-otpview-pinview,但我是通过使用一些EditText属性和addTextChangedListener()手动完成的。

首先,使用android:inputtype=“number”android:maxlength=“1”允许用户只键入数字。

示例:

1)XML文件

      <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="40dp"
            android:gravity="center"
            android:orientation="horizontal">

            <EditText
                android:id="@+id/otp1"
                android:layout_width="40dp"
                android:layout_height="45dp"
                android:backgroundTint="@color/login_start_color"
                android:gravity="center"
                android:imeOptions="actionNext"
                android:importantForAutofill="no"
                android:inputType="number"
                android:maxLength="1"
                android:textColor="@color/black"
                android:textColorHighlight="@color/darker_gray"
                android:textColorLink="@color/login_start_color"
                android:textCursorDrawable="@drawable/cursor_drawable"
                android:textSize="24sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/otp2"
                android:layout_width="40dp"
                android:layout_height="45dp"
                android:backgroundTint="@color/login_start_color"
                android:gravity="center"
                android:imeOptions="actionNext"
                android:importantForAutofill="no"
                android:inputType="number"
                android:maxLength="1"
                android:textColor="@color/black"
                android:textColorHighlight="@color/darker_gray"
                android:textColorLink="@color/login_start_color"
                android:textCursorDrawable="@drawable/cursor_drawable"
                android:textSize="24sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/otp3"
                android:layout_width="40dp"
                android:layout_height="45dp"
                android:backgroundTint="@color/login_start_color"
                android:gravity="center"
                android:imeOptions="actionNext"
                android:importantForAutofill="no"
                android:inputType="number"
                android:maxLength="1"
                android:textColor="@color/black"
                android:textColorHighlight="@color/darker_gray"
                android:textColorLink="@color/login_start_color"
                android:textCursorDrawable="@drawable/cursor_drawable"
                android:textSize="24sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/otp4"
                android:layout_width="40dp"
                android:layout_height="45dp"
                android:backgroundTint="@color/login_start_color"
                android:gravity="center"
                android:imeOptions="actionDone"
                android:importantForAutofill="no"
                android:inputType="number"
                android:maxLength="1"
                android:textColor="@color/black"
                android:textColorHighlight="@color/darker_gray"
                android:textColorLink="@color/login_start_color"
                android:textCursorDrawable="@drawable/cursor_drawable"
                android:textSize="24sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/otp5"
                android:layout_width="40dp"
                android:layout_height="45dp"
                android:backgroundTint="@color/login_start_color"
                android:gravity="center"
                android:imeOptions="actionDone"
                android:importantForAutofill="no"
                android:inputType="number"
                android:maxLength="1"
                android:textColor="@color/black"
                android:textColorHighlight="@color/darker_gray"
                android:textColorLink="@color/login_start_color"
                android:textCursorDrawable="@drawable/cursor_drawable"
                android:textSize="24sp"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/otp6"
                android:layout_width="40dp"
                android:layout_height="45dp"
                android:backgroundTint="@color/login_start_color"
                android:gravity="center"
                android:imeOptions="actionDone"
                android:importantForAutofill="no"
                android:inputType="number"
                android:maxLength="1"
                android:textColor="@color/black"
                android:textColorHighlight="@color/darker_gray"
                android:textColorLink="@color/login_start_color"
                android:textCursorDrawable="@drawable/cursor_drawable"
                android:textSize="24sp"
                android:textStyle="bold" />
        </LinearLayout>

2)添加addTextChangedListener()以使所有edittext自动跳转到下一个edittext。

private void setotpinput() {
    otp1.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().trim().isEmpty()) {
                otp2.requestFocus();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
    otp2.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().trim().isEmpty()) {
                otp3.requestFocus();
            } else {
                otp1.requestFocus();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
    otp3.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().trim().isEmpty()) {
                otp4.requestFocus();
            } else {
                otp2.requestFocus();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
    otp4.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().trim().isEmpty()) {
                otp5.requestFocus();
            } else {
                otp3.requestFocus();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
    otp5.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().trim().isEmpty()) {
                otp6.requestFocus();
            } else {
                otp4.requestFocus();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
    otp6.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if (!s.toString().trim().isEmpty()) {
                otp1.requestFocus();
            } else {
                otp5.requestFocus();
            }
        }

        @Override
        public void afterTextChanged(Editable s) {

        }
    });
}
 类似资料:
  • 如何将转换为带有圆边的按钮?我使用获得了圆角边框形状,但不知怎么需要给边框着色。

  • SVG 圆形 - <circle> <circle> 标签可用来创建一个圆: 下面是SVG代码: <svg xmlns="http://www.w3.org/2000/svg" version="1.1">   <circle cx="100" cy="50" r="40" stroke="black"   stroke-width="2" fill="red"/> </svg> 对于Opera用

  • 我要做什么::我想使用我当前的实现为圆形图像添加一个黑色边框,如何在不使用第三方库的情况下实现这一点 全面转变。JAVA

  • 问题内容: 请提供有关如何在椭圆形或圆形上进行裁剪的想法。请分享您的想法。 问题答案: 通过增加半径,它将变得更圆滑。 只要图像是正方形,就可以通过将宽度的一半作为拐角半径来获得一个完美的圆: 您还需要添加 斯威夫特4.2

  • 主要内容:圆角矩形,椭圆示例JavaFX Shape类定义了常见的形状,例如线,矩形,圆,Arc,CubicCurve,Ellipse和QuadCurve。 在场景图上绘制矩形需要宽度,高度和左上角的(,)位置。 要在JavaFX中绘制一个矩形,可以使用类。 上面的代码生成以下结果。 圆角矩形 类实现了弧宽和弧高。可以使用这些功能来绘制圆角矩形。 上面的代码生成以下结果。 椭圆示例 上面的代码生成以下结果。

  • 可以使用包的相应方法在图像上绘制各种形状,如圆形,矩形,线条,椭圆,多段线,凸起,多段线,多段线。 可以使用类的方法在图像上绘制一个圆形。 以下是这种方法的语法 - 该方法接受以下参数 - mat - Mat对象,表示要在其上绘制圆的图像。 point - 代表圆中心的对象。 radius - 表示圆的半径的整型变量。 scalar - 表示圆的颜色的标量对象(BGR)。 thickness -