我希望在Activity
的物理键盘上按下数字或字母时收到通知。我在 Android Studio 中创建了一个简单的应用程序,其中包含一个具有单个视图的活动。 输入、删除等都收到了,但不是实际的字母或数字。 我不想使用TextView
或EditText
的观点。 我只是希望能够使用简单的视图查看击键。 任何帮助,不胜感激。
这是代码:
public class MainActivity extends AppCompatActivity {
public static final String TAG = "My Activity";
TextView view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = (View)findViewById(R.id.view);
view.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
Log.d(TAG, "onKey " + keyCode);
return false;
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d(TAG, "KEY PRESSED " + keyCode);
return super.onKeyDown(keyCode, event);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Log.d(TAG, "DISPATCH KEY" + event.getKeyCode());
return super.dispatchKeyEvent(event);
}
}
布局为:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.plexistream.myapplication.MainActivity">
<View
android:id="@+id/view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</android.support.constraint.ConstraintLayout>
按如下方式尝试使用focus
。
this.requestFocus();
this.setFocusableInTouchMode(true);
好的,看起来这是我使用的模拟器的问题。 NoxPlayer没有传递这些密钥。 我切换到BlueStacks,我不再有问题了。