我有一个要求,例如当用户单击编辑文本时,仅应处于可编辑模式,否则应处于不可编辑模式。在编辑文本之后,需要删除光标,并且更新后的文本对于“编辑”文本应该是可见的。请告诉我任何想法。
我的实现方式是: 我的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();
}
});
但是问题是,编辑后光标没有从编辑文本移开,当我移至下一页并返回同一页面时,更新的编辑文本没有显示在编辑文本中
答案 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);
}
});
}
}