Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

จะตรวจสอบการมองเห็นของแป้นพิมพ์เสมือนบน Android ได้อย่างไร?


มีบางสถานการณ์เราควรหาคีย์บอร์ดที่มองเห็นได้หรือไม่ใช่ในกิจกรรมเฉพาะ ในตัวอย่างนี้ เราสามารถตรวจสอบการมองเห็นแป้นพิมพ์เสมือนบน Android

ขั้นตอนที่ 1 − สร้างโครงการใหม่ใน Android Studio ไปที่ไฟล์ ⇒ โครงการใหม่และกรอกรายละเอียดที่จำเป็นทั้งหมดเพื่อสร้างโครงการใหม่

ขั้นตอนที่ 2 − เพิ่มรหัสต่อไปนี้ใน res/layout/activity_main.xml

<รุ่นก่อนหน้า> <ปุ่ม android:id ="@+id/button" android:layout_width ="wrap_content" android:layout_height ="wrap_content" android:text ="คลิกที่นี่เพื่อซ่อน" app:layout_constraintBottom_toBottomOf ="parent" app:layout_constraintLeft_toLeftOf =แอป "พาเรนต์":layout_constraintRight_toRightOf =แอป "พาเรนต์":layout_constraintTop_toTopOf ="พาเรนต์" />

ขั้นตอนที่ 3 - เพิ่มรหัสต่อไปนี้ใน src/MainActivity.java

นำเข้า android.graphics.Rect;นำเข้า android.os.Build;นำเข้า android.os.Bundle;นำเข้า android.support.annotation.RequiresApi;นำเข้า android.support.constraint.ConstraintLayout;นำเข้า android.support.v7.app .AppCompatActivity;นำเข้า android.util.Log;นำเข้า android.view.View;นำเข้า android.view.ViewTreeObserver;นำเข้า android.view.inputmethod.InputMethodManager;นำเข้า android.widget.Button;นำเข้า android.widget.EditText;นำเข้า android widget.Toast คลาสสาธารณะ MainActivity ขยาย AppCompatActivity ใช้ View.OnClickListener { ConstraintLayout constraintLayout; @Override ป้องกันโมฆะ onCreate (Bundle saveInstanceState) { super.onCreate (savedInstanceState); setContentView(R.layout.activity_main); ปุ่มปุ่ม =findViewById(R.id.button); EditText editText=findViewById(R.id.editext); editText.requestFocus(); constraintLayout=findViewById(R.id.rootview); constraintLayout.getViewTreeObserver ().addOnGlobalLayoutListener (ใหม่ ViewTreeObserver.OnGlobalLayoutListener () { @Override สาธารณะโมฆะ onGlobalLayout () { Rect r =ใหม่ Rect (); constraintLayout.getWindowVisibleDisplaytRoight screenHet (r) ข้อ จำกัด Layout.getWindowVisibleDisplayFrame (r) ในข้อ จำกัด Layout.getWindowVisibleDisplayFrame (r) ใน; int keypadHeight =screenHeight - r.bottom; if (keypadHeight> screenHeight * 0.15) { Toast.makeText(MainActivity.this,"Keyboard is displays",Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity) .this,"ปิดแป้นพิมพ์",Toast.LENGTH_LONG).show(); } } }); button.setOnClickListener (นี่); } @RequiresApi (api =Build.VERSION_CODES.O) @ แทนที่โมฆะสาธารณะ onClick (ดู v) { สวิตช์ (v.getId ()) { กรณี R.id.button:hideSoftkeybard (v); หยุดพัก; } } โมฆะส่วนตัว hideSoftkeybard (ดู v) { InputMethodManager inputMethodManager =(InputMethodManager) getSystemService (INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(v.getWindowToken(), 0); }}

ในโค้ดด้านบนนี้ เราได้ใช้ตัวฟัง viewTreeObserver เพื่อค้นหาการเปลี่ยนแปลงกลุ่มมุมมองในกิจกรรมเฉพาะ ในผู้สังเกตนั้น เราพบความสูงขององค์ประกอบรูทโดยใช้รหัสต่อไปนี้ −

int screenHeight =constraintLayout.getRootView().getHeight();

ตอนนี้เราต้องหาความสูงของคีย์บอร์ดตามที่แสดงด้านล่าง

Rect r =ใหม่ Rect();constraintLayout.getWindowVisibleDisplayFrame(r);int keypadHeight =screenHeight - r.bottom;

ตอนนี้เราต้องเปรียบเทียบความสูงของคีย์บอร์ดกับความสูงของรูทวิวดังที่แสดงด้านล่าง

if (keypadHeight> screenHeight * 0.15) { Toast.makeText(MainActivity.this,"Keyboard is displays",Toast.LENGTH_LONG).show();} else { Toast.makeText(MainActivity.this,"keyboard closed" ,Toast.LENGTH_LONG).show();}

ขั้นตอนที่ 4 − เพิ่มโค้ดต่อไปนี้ลงในไฟล์ AndroidManifest.xml ดังที่แสดงด้านล่าง

     <หมวดหมู่ android:name ="android.intent.category.LAUNCHER" />   

ในโค้ดด้านบนนี้ เราได้เพิ่ม windowsoftInputMode เป็น stateAlwaysVisible มีประโยชน์เมื่อต้องการแก้ไขข้อความจะแสดงแป้นพิมพ์

มาลองเรียกใช้แอปพลิเคชันของคุณกัน ฉันคิดว่าคุณได้เชื่อมต่ออุปกรณ์มือถือ Android จริงกับคอมพิวเตอร์ของคุณ ในการรันแอพจาก android studio ให้เปิดไฟล์กิจกรรมของโปรเจ็กต์ของคุณแล้วคลิก Run จะตรวจสอบการมองเห็นของแป้นพิมพ์เสมือนบน Android ได้อย่างไร? ไอคอนจากแถบเครื่องมือ เลือกอุปกรณ์มือถือของคุณเป็นตัวเลือก จากนั้นตรวจสอบอุปกรณ์มือถือของคุณซึ่งจะแสดงหน้าจอเริ่มต้นของคุณ

จะตรวจสอบการมองเห็นของแป้นพิมพ์เสมือนบน Android ได้อย่างไร?

ในผลลัพธ์ด้านบน เมื่อแสดงแป้นพิมพ์ จะแสดงข้อความเมื่อแสดงแป้นพิมพ์

จะตรวจสอบการมองเห็นของแป้นพิมพ์เสมือนบน Android ได้อย่างไร?

คลิกที่ปุ่มเพื่อซ่อนแป้นพิมพ์ มันจะแสดงข้อความเมื่อปิดแป้นพิมพ์ดังที่แสดงด้านบน