在用户输入内容时,在Edittext中添加图片,并用其他图片替换

卡洛斯

我是Android的新手,并且具有以下要求。

请让我知道这是可行的。

在此处输入图片说明

最初,EditText将由6个空圆圈组成。当用户单击第一位数字时,圆圈将如下图所示填充。当用户单击退格键时,圆圈变为空。

在此处输入图片说明

任何链接,示例或代码示例都将有所帮助。

卡洛斯

以下是解决我的问题的代码。@Booger和@Muthuraj的链接对构建此代码很有帮助

MainActivity.java文件

package com.app.xyz.activity;

import android.app.Service;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build; 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.app.xyz.R;

public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener, View.OnKeyListener, TextWatcher {

private static final String TAG = "[MainActivity]";

TextView tvHello, tv_one, tv_two, tv_three, tv_four, tv_five, tv_six;

private EditText mPinFirstDigitEditText;
private EditText mPinSecondDigitEditText;
private EditText mPinThirdDigitEditText;
private EditText mPinForthDigitEditText;
private EditText mPinFifthDigitEditText;
private EditText mPinSixthDigitEditText;

private EditText mPinHiddenEditText;
@Override
public void afterTextChanged(Editable s) {
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

/**
 * Hides soft keyboard.
 *
 * @param editText EditText which has focus
 */
public void hideSoftKeyboard(EditText editText) {
    if (editText == null)
        return;

    InputMethodManager imm = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new MainLayout(this, null));

    init();

    setPINListeners();

}

/**
 * Initialize EditText fields.
 */
private void init() {

    tvHello = (TextView) findViewById(R.id.tvHello);

    tv_one = (TextView) findViewById(R.id.tv_three);

    tv_two = (TextView) findViewById(R.id.tv_four);

    tv_three = (TextView) findViewById(R.id.tv_five);

    tv_four = (TextView) findViewById(R.id.tv_six);

    tv_five = (TextView) findViewById(R.id.tv_seven);

    tv_six = (TextView) findViewById(R.id.tv_eight);





    mPinFirstDigitEditText = (EditText) findViewById(R.id.pin_first_edittext);
    mPinSecondDigitEditText = (EditText) findViewById(R.id.pin_second_edittext);
    mPinThirdDigitEditText = (EditText) findViewById(R.id.pin_third_edittext);
    mPinForthDigitEditText = (EditText) findViewById(R.id.pin_forth_edittext);
    mPinFifthDigitEditText = (EditText) findViewById(R.id.pin_fifth_edittext);
    mPinSixthDigitEditText = (EditText) findViewById(R.id.pin_sixth_edittext);
    mPinHiddenEditText = (EditText) findViewById(R.id.pin_hidden_edittext);
    getWindow().setSoftInputMode(android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

    mPinHiddenEditText.requestFocus();
    InputMethodManager imm = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);
    imm.showSoftInput(mPinHiddenEditText, InputMethodManager.SHOW_FORCED);



}


@Override
public void onFocusChange(View v, boolean hasFocus) {
    final int id = v.getId();
    switch (id) {
        case R.id.pin_first_edittext:
            if (hasFocus) {
                setFocus(mPinHiddenEditText);
                showSoftKeyboard(mPinHiddenEditText);
            }
            break;

        case R.id.pin_second_edittext:
            if (hasFocus) {
                setFocus(mPinHiddenEditText);
                showSoftKeyboard(mPinHiddenEditText);
            }
            break;

        case R.id.pin_third_edittext:
            if (hasFocus) {
                setFocus(mPinHiddenEditText);
                showSoftKeyboard(mPinHiddenEditText);
            }
            break;

        case R.id.pin_forth_edittext:
            if (hasFocus) {
                setFocus(mPinHiddenEditText);
                showSoftKeyboard(mPinHiddenEditText);
            }
            break;

        case R.id.pin_fifth_edittext:
            if (hasFocus) {
                setFocus(mPinHiddenEditText);
                showSoftKeyboard(mPinHiddenEditText);
            }
            break;

        case R.id.pin_sixth_edittext:
            if (hasFocus) {
                setFocus(mPinHiddenEditText);
                showSoftKeyboard(mPinHiddenEditText);
            }
            break;

        default:
            break;
    }
}

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        final int id = v.getId();

        Log.e(TAG, "======================================");

        Log.d(TAG, "mPinHiddenEditText===>"+mPinHiddenEditText.getText());
        Log.d(TAG, "mPinHiddenEditText.getText().length()===>"+mPinHiddenEditText.getText().length());


        switch (id) {
            case R.id.pin_hidden_edittext:
                if (keyCode == KeyEvent.KEYCODE_DEL) {
                    if (mPinHiddenEditText.getText().length() == 6) {
                        mPinSixthDigitEditText.setText("");

                    }
                    else if (mPinHiddenEditText.getText().length() == 5) {
                        mPinFifthDigitEditText.setText("");
                    }
                    else if (mPinHiddenEditText.getText().length() == 4) {
                        mPinForthDigitEditText.setText("");
                    }
                    else if (mPinHiddenEditText.getText().length() == 3) {
                        mPinThirdDigitEditText.setText("");
                    }
                    else if (mPinHiddenEditText.getText().length() == 2) {
                        mPinSecondDigitEditText.setText("");
                    }

                    else if (mPinHiddenEditText.getText().length() == 1) {
                        mPinFirstDigitEditText.setText("");
                    }


                    if (mPinHiddenEditText.length() > 0)
                        mPinHiddenEditText.setText(mPinHiddenEditText.getText().subSequence(0, mPinHiddenEditText.getText().length() - 1));

                    Log.d(TAG, "hidden====>"+mPinHiddenEditText.getText());
                    Log.e(TAG, "======================================");

                    return true;
                }

                break;

            default:
                return false;
        }
    }

    return false;
}

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {

    Log.d(TAG, "s.length()===>"+s.length());
    Log.d(TAG, "count===>"+count);
    Log.d(TAG, "s===>"+s.toString());

    if (s.length() == 0) {
        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);


    } else if (s.length() == 1) {
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);

        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);



    } else if (s.length() == 2) {
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);


    } else if (s.length() == 3) {
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);



    } else if (s.length() == 4) {
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);



    } else if (s.length() == 5) {
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_panorama_fish_eye_black_24dp);



    } else if (s.length() == 6) {
        mPinSixthDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinFifthDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinForthDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinThirdDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinSecondDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);
        mPinFirstDigitEditText.setBackgroundResource(R.drawable.ic_lens_black_24dp);


    }
}

/**
 * Sets default PIN background.
 *
 * @param editText edit text to change
 */
private void setDefaultPinBackground(EditText editText) {
    setViewBackground(editText, getResources().getDrawable(R.drawable.ic_panorama_fish_eye_black_24dp));
}

/**
 * Sets focus on a specific EditText field.
 *
 * @param editText EditText to set focus on
 */
public static void setFocus(EditText editText) {
    if (editText == null)
        return;



    editText.setFocusable(true);
    editText.setFocusableInTouchMode(true);
    editText.requestFocus();
}



/**
 * Sets listeners for EditText fields.
 */
private void setPINListeners() {

    mPinHiddenEditText.addTextChangedListener(this);

    mPinFirstDigitEditText.setOnFocusChangeListener(this);
    mPinSecondDigitEditText.setOnFocusChangeListener(this);
    mPinThirdDigitEditText.setOnFocusChangeListener(this);
    mPinForthDigitEditText.setOnFocusChangeListener(this);
    mPinFifthDigitEditText.setOnFocusChangeListener(this);
    mPinSixthDigitEditText.setOnFocusChangeListener(this);

    mPinFirstDigitEditText.setOnKeyListener(this);
    mPinSecondDigitEditText.setOnKeyListener(this);
    mPinThirdDigitEditText.setOnKeyListener(this);
    mPinForthDigitEditText.setOnKeyListener(this);
    mPinFifthDigitEditText.setOnKeyListener(this);
    mPinSixthDigitEditText.setOnKeyListener(this);

    mPinHiddenEditText.setOnKeyListener(this);
}

/**
 * Sets background of the view.
 * This method varies in implementation depending on Android SDK version.
 *
 * @param view       View to which set background
 * @param background Background to set to view
 */
@SuppressWarnings("deprecation")
public void setViewBackground(View view, Drawable background) {
    if (view == null || background == null)
        return;

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        view.setBackground(background);
    } else {
        view.setBackgroundDrawable(background);
    }
}

/**
 * Shows soft keyboard.
 *
 * @param editText EditText which has focus
 */
public void showSoftKeyboard(EditText editText) {
    Log.d(TAG,"showSoftKeyboard"+editText.getText());
    if (editText == null)
        return;


    InputMethodManager imm = (InputMethodManager) getSystemService(Service.INPUT_METHOD_SERVICE);
    imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);


}

/**
 * Custom LinearLayout with overridden onMeasure() method
 * for handling software keyboard show and hide events.
 */
public class MainLayout extends LinearLayout {

    public MainLayout(Context context, AttributeSet attributeSet) {
        super(context, attributeSet);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.activity_main, this);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        final int proposedHeight = MeasureSpec.getSize(heightMeasureSpec);
        final int actualHeight = getHeight();

        Log.d("TAG", "proposed: " + proposedHeight + ", actual: " + actualHeight);

        if (actualHeight >= proposedHeight) {

        }

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
  }


}

Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pin_content_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:padding="15dp"
android:layout_alignParentBottom="true">



<LinearLayout
    android:id="@+id/pin_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="35dp"

    android:orientation="horizontal">

    <EditText
        android:id="@+id/pin_first_edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:background="@drawable/ic_panorama_fish_eye_black_24dp"
        />

    <EditText
        android:id="@+id/pin_second_edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:background="@drawable/ic_panorama_fish_eye_black_24dp"

        />

    <EditText
        android:id="@+id/pin_third_edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:background="@drawable/ic_panorama_fish_eye_black_24dp"

        />

    <EditText
        android:id="@+id/pin_forth_edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:background="@drawable/ic_panorama_fish_eye_black_24dp"

        />

    <EditText
        android:id="@+id/pin_fifth_edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:background="@drawable/ic_panorama_fish_eye_black_24dp"
        />

    <EditText
        android:id="@+id/pin_sixth_edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"

        android:background="@drawable/ic_panorama_fish_eye_black_24dp"
        />
</LinearLayout>

<EditText
    android:id="@+id/pin_hidden_edittext"
    android:layout_width="1dp"
    android:layout_height="1dp"
    android:gravity="center_horizontal"
    android:layout_gravity="center_horizontal"
    android:background="@null"
    android:inputType="number|numberPassword"
    android:maxLength="6"
    android:textColor="#00000000"
    />


 </LinearLayout>

我将可绘制对象用于填充(ic_lens_black_24dp)和空(ic_panorama_fish_eye_black_24dp)圆。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在用户打开相机拍照时在屏幕中添加图片

来自分类Dev

如何在用户在文本输入中输入内容时过滤DIV

来自分类Dev

我想更新所有帖子中的用户个人资料图片以及他在用户更新/更改他的个人资料图片时发布的图片

来自分类Dev

jQuery仅在输入字段中输入内容时才添加新字段

来自分类Dev

将图片插入其他div中

来自分类Dev

内存不足,无法在用户窗体中设置图片

来自分类Dev

当用户不输入内容时,我想在表单验证中显示错误消息

来自分类Dev

如何在 Java 中创建自动更正,让我在用户输入时替换他们?

来自分类Dev

更改输入内容时如何添加JavaScript操作?

来自分类Dev

在iframe中输入内容时如何显示输入?

来自分类Dev

将图片悬停在其他内容下方

来自分类Dev

其他图片右上方的图片?

来自分类Dev

使程序“暂停”,直到用户在JTextField中输入内容为止

来自分类Dev

twitter bootstrap:当用户键入内容时,如何在右侧添加x以清除输入框?

来自分类Dev

用户开始在输入框中输入内容时,如何使用AngularJS加载新页面

来自分类Dev

SwiftUI:如何仅在用户停止在TextField中键入内容时才运行代码?

来自分类Dev

如何在用户表单中卸载时绕过其他潜艇?

来自分类Dev

创建FK时出现语法错误,我是否从sql server中的用户输入中正确添加了图片,或者有另一种方法

来自分类Dev

过渡影响其他图片

来自分类Dev

响应图像或其他图片

来自分类Dev

在用户提交的背景图片上添加滤镜或透明.png

来自分类Dev

如果和模板中的其他语句不起作用。即使用户没有个人资料图片,虚拟图片也未显示,

来自分类Dev

当用户在其中输入内容时,为输入字段事件设置占位符动画

来自分类Dev

bash脚本,用于检查输入内容是否为“ y”,“ n”或其他-不起作用

来自分类Dev

onClick标签更改为文本输入-然后将初始标签内容替换为用户输入内容?[快速表格编辑]

来自分类Dev

最后一张图片与该类别中其他图片的尺寸不同

来自分类Dev

首先从文件中输入内容,然后从用户输入中运行交互式REPL

来自分类Dev

如何在用户输入创建的数组中添加逗号?

来自分类Dev

如何在用户输入创建的数组中添加逗号?

Related 相关文章

  1. 1

    在用户打开相机拍照时在屏幕中添加图片

  2. 2

    如何在用户在文本输入中输入内容时过滤DIV

  3. 3

    我想更新所有帖子中的用户个人资料图片以及他在用户更新/更改他的个人资料图片时发布的图片

  4. 4

    jQuery仅在输入字段中输入内容时才添加新字段

  5. 5

    将图片插入其他div中

  6. 6

    内存不足,无法在用户窗体中设置图片

  7. 7

    当用户不输入内容时,我想在表单验证中显示错误消息

  8. 8

    如何在 Java 中创建自动更正,让我在用户输入时替换他们?

  9. 9

    更改输入内容时如何添加JavaScript操作?

  10. 10

    在iframe中输入内容时如何显示输入?

  11. 11

    将图片悬停在其他内容下方

  12. 12

    其他图片右上方的图片?

  13. 13

    使程序“暂停”,直到用户在JTextField中输入内容为止

  14. 14

    twitter bootstrap:当用户键入内容时,如何在右侧添加x以清除输入框?

  15. 15

    用户开始在输入框中输入内容时,如何使用AngularJS加载新页面

  16. 16

    SwiftUI:如何仅在用户停止在TextField中键入内容时才运行代码?

  17. 17

    如何在用户表单中卸载时绕过其他潜艇?

  18. 18

    创建FK时出现语法错误,我是否从sql server中的用户输入中正确添加了图片,或者有另一种方法

  19. 19

    过渡影响其他图片

  20. 20

    响应图像或其他图片

  21. 21

    在用户提交的背景图片上添加滤镜或透明.png

  22. 22

    如果和模板中的其他语句不起作用。即使用户没有个人资料图片,虚拟图片也未显示,

  23. 23

    当用户在其中输入内容时,为输入字段事件设置占位符动画

  24. 24

    bash脚本,用于检查输入内容是否为“ y”,“ n”或其他-不起作用

  25. 25

    onClick标签更改为文本输入-然后将初始标签内容替换为用户输入内容?[快速表格编辑]

  26. 26

    最后一张图片与该类别中其他图片的尺寸不同

  27. 27

    首先从文件中输入内容,然后从用户输入中运行交互式REPL

  28. 28

    如何在用户输入创建的数组中添加逗号?

  29. 29

    如何在用户输入创建的数组中添加逗号?

热门标签

归档