ฉันมี EditText พร้อมข้อความจำลองมาด้วย เมื่อผู้ใช้คลิกที่มันฉันต้องการที่จะได้รับการคัดเลือกเพื่อให้เมื่อผู้ใช้เริ่มพิมพ์ข้อความหุ่นได้รับการลบ
ฉันจะบรรลุสิ่งนี้ได้อย่างไร
ฉันมี EditText พร้อมข้อความจำลองมาด้วย เมื่อผู้ใช้คลิกที่มันฉันต้องการที่จะได้รับการคัดเลือกเพื่อให้เมื่อผู้ใช้เริ่มพิมพ์ข้อความหุ่นได้รับการลบ
ฉันจะบรรลุสิ่งนี้ได้อย่างไร
คำตอบ:
คุณสามารถลองในmain.xml
ไฟล์ของคุณ:
android:selectAllOnFocus="true"
หรือใน Java ให้ใช้
editText.setSelectAllOnFocus(true);
editText.setSelectAllOnFocus(true);
วิธีนี้ใช้งานได้หากคุณต้องการทำแบบเป็นโปรแกรม
Fragments
)
editText.requestFocus()
ปัญหาeditText.clearFocus()
ล่วงหน้าเพื่อให้แน่ใจว่าการกระทำที่ต้องการเกิดขึ้นในกรณีที่มุมมองโฟกัสอยู่แล้ว
EditText dummy = ...
// android.view.View.OnFocusChangeListener
dummy.setOnFocusChangeListener(new OnFocusChangeListener(){
public void onFocusChange(View v, boolean hasFocus){
if (hasFocus) && (isDummyText())
((EditText)v).selectAll();
}
});
OnFocusChangeListener listener = new OnFocusChangeListener
... ฯลฯ ... จากนั้นeditText1.setOnFocusChangeListener(listener)
editText2.setOnFocusChangeListener(listener)
เป็นต้น ...
ฉันรู้ว่าคุณได้พบวิธีแก้ปัญหา แต่วิธีที่เหมาะสมจริงๆในการทำสิ่งที่คุณขอคือเพียงใช้android:hint
แอตทริบิวต์ใน EditText ของคุณ ข้อความนี้จะปรากฏขึ้นเมื่อกล่องว่างเปล่าและไม่ได้มุ่งเน้น แต่จะหายไปเมื่อเลือกกล่อง EditText
จัดการโดยเรียกโฟกัสและการเลือกบนโปรแกรม
{
editabletext.requestFocus();
editabletext.selectAll();
}
ทำไมคุณไม่ลองใช้Android: hint = "hint"เพื่อให้คำแนะนำแก่ผู้ใช้ .. !!
"คำใบ้" จะหายไปโดยอัตโนมัติเมื่อผู้ใช้คลิกที่ edittextbox มันเป็นทางออกที่เหมาะสมและดีที่สุด
คุณยังสามารถเพิ่มวิธี OnClick ไปที่ editText หลังจากนั้น
_editText.setSelectAllOnFocus(true);
และในที่:
_editText.clearFocus();
_editText.requestFocus();
ทันทีที่คุณคลิกแก้ไขข้อความข้อความทั้งหมดจะถูกเลือก
SelectAllOnFocus ทำงานเป็นครั้งแรกที่ EditText ได้รับการโฟกัส แต่ถ้าคุณต้องการเลือกข้อความทุกครั้งที่ผู้ใช้คลิกที่มันคุณจะต้องโทรหาeditText.clearFocus()
ระหว่างเวลา
ตัวอย่างเช่นหากแอปของคุณมีหนึ่ง EditText และหนึ่งปุ่มการคลิกที่ปุ่มหลังจากเปลี่ยน EditText จะทำให้โฟกัสใน EditText จากนั้นผู้ใช้จะต้องใช้ที่จับเคอร์เซอร์และปุ่ม Backspace เพื่อลบสิ่งที่อยู่ใน EditText ก่อนที่พวกเขาจะสามารถป้อนค่าใหม่ ดังนั้นเรียกใช้editText.clearFocus()
ในonClick
วิธีการของปุ่ม
ฉันลองคำตอบข้างต้นแล้วไม่ทำงานจนกว่าฉันจะเปลี่ยนคำสั่ง นี่คือสิ่งที่ได้ผลสำหรับฉัน:
myEditText.setSelectAllOnFocus(true);
myEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onClickMyEditText();
}
});
private void onClickMyEditText() {
if(myEditText.isFocused()){
myEditText.clearFocus();
myEditText.requestFocus();
}else{
myEditText.requestFocus();
myEditText.clearFocus();
}
}
ฉันต้องถามว่าโฟกัสอยู่ที่ EditText หรือไม่และถ้าไม่ขอโฟกัสก่อนแล้วค่อยเคลียร์มัน ไม่เช่นนั้นครั้งต่อไปที่ฉันคลิกที่ EditText คีย์บอร์ดเสมือนจะไม่ปรากฏขึ้น
เพียงเพิ่มสิ่งนี้ลงใน editText ของคุณในไฟล์. xml
หุ่นยนต์: selectAllOnFocus = "true"
สิ่งนี้ใช้ได้กับฉัน:
myEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(myEditText.isFocused()){
myEditText.requestFocus();
myEditText.clearFocus();
myEditText.setSelection(myEditText.getText().length(), 0);
}else{
myEditText.requestFocus();
myEditText.clearFocus();
}
}
});