在Android中编辑文本后如何删除编辑文本焦点并自动保存文本

时间:2020-09-25 06:45:53

标签: java android android-layout

我有一个要求,例如当用户单击编辑文本时,仅应处于可编辑模式,否则应处于不可编辑模式。在编辑文本之后,需要删除光标,并且更新后的文本对于“编辑”文本应该是可见的。请告诉我任何想法。

我的实现方式是: 我的edittext xml

    <EditText
                android:layout_weight="1"
                android:id="@+id/namevalue"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:fontFamily="@font/robotobold"
                android:text="ABC"
                android:focusable="false"
                android:cursorVisible="false"
                android:background="@android:color/transparent"
                android:textSize="14sp"
                android:textColor="@color/colortextw"
                />

我的Java代码

nameval.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        nameval.setCursorVisible(true);
        nameval.setFocusable(true);
        nameval.setFocusableInTouchMode(true);
        nameval.requestFocus();
    }
});            

但是问题是,编辑后光标没有从编辑文本移开,当我移至下一页并返回同一页面时,更新的编辑文本没有显示在编辑文本中

1 个答案:

答案 0 :(得分:1)

我没有从您的要求中得到很多好处,但是如果要在单击后启用EditText,并且在向其写入内容后希望将光标移至下一个编辑文本,那么滚滚代码段将为您提供帮助。 >

示例:

public class DemoActivity1 extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_demo);

    EditText editTextName = findViewById(R.id.etx_name);
    EditText editTextEmail = findViewById(R.id.etx_email);
    EditText editTextMobile = findViewById(R.id.etx_mob);


    editTextName.setFocusable(false);
    editTextName.setClickable(true);

    editTextEmail.setFocusable(false);
    editTextEmail.setClickable(true);


    editTextMobile.setFocusable(false);
    editTextMobile.setClickable(true);

    editTextName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            editTextName.setClickable(true);
            editTextName.setEnabled(true);
            editTextName.setFocusableInTouchMode(true);


        }
    });
    editTextEmail.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            editTextEmail.setFocusable(true);
            editTextName.setFocusable(false);
            editTextName.setClickable(true);
        }
    });

    editTextName.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) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    editTextEmail.requestFocus();
                }
            }, 1000);

        }
    });

    editTextEmail.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) {

        }

        @Override
        public void afterTextChanged(Editable s) {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    editTextEmail.setFocusable(false);
                    editTextEmail.setClickable(true);
                    editTextMobile.requestFocus();
                }
            }, 1000);

        }
    });

}

}