gpt4 book ai didi

java - 键盘 View 键码不起作用

转载 作者:行者123 更新时间:2023-12-01 04:18:15 24 4
gpt4 key购买 nike

我刚刚开始接触 Android 编程,想要创建一个简单的 Hangman 游戏,没有特殊的花招。我的应用程序的布局如下所示:http://www.imagebanana.com/view/2cqs6lt3/Unbenannt.PNG因此,主要 Activity 包含一个 ImageView 来显示游戏的当前状态,一个 TextView 用于显示要猜测的单词,底部的一个 KeyboardView 用于输入。

对于这个键盘,我使用这个keyboard_layout.xml 文件创建了一个自定义键盘:

<?xml version="1.0" encoding="utf-8"?>
<android.inputmethodservice.Keyboard xmlns:android="http://schemas.android.com/apk/res/android" >

<Row
android:horizontalGap="1%p"
android:keyHeight="8%p"
android:verticalGap="0.7%p" >
<Key
android:codes="65"
android:keyLabel="A" android:keyEdgeFlags="left"/>
<Key
android:codes="66"
android:keyLabel="B" />
<Key
android:codes="67"
android:keyLabel="C" />
<Key
android:codes="68"
android:keyLabel="D" />
<Key
android:codes="69"
android:keyLabel="E" />
<Key
android:codes="70"
android:keyLabel="F" />
<Key
android:codes="71"
android:keyLabel="G" />
<Key
android:codes="72"
android:keyLabel="H" />
<Key
android:codes="73"
android:keyLabel="I" android:keyEdgeFlags="right"/>
</Row>
<Row
android:horizontalGap="1%p"
android:keyHeight="8%p"
android:verticalGap="0.7%p" >
<Key
android:codes="74"
android:keyLabel="J" android:keyEdgeFlags="left"/>
<Key
android:codes="75"
android:keyLabel="K" />
<Key
android:codes="76"
android:keyLabel="L" />
<Key
android:codes="77"
android:keyLabel="M" />
<Key
android:codes="78"
android:keyLabel="N" />
<Key
android:codes="79"
android:keyLabel="O" />
<Key
android:codes="80"
android:keyLabel="P" />
<Key
android:codes="81"
android:keyLabel="Q" />
<Key
android:codes="82"
android:keyLabel="R" android:keyEdgeFlags="right"/>
</Row>
<Row
android:horizontalGap="1%p"
android:keyHeight="8%p"
android:verticalGap="0.7%p" >
<Key
android:codes="83"
android:horizontalGap="2.5%p"
android:keyLabel="S" android:keyEdgeFlags="left"/>
<Key
android:codes="84"
android:keyLabel="T" />
<Key
android:codes="85"
android:keyLabel="U" />
<Key
android:codes="86"
android:keyLabel="V" />
<Key
android:codes="87"
android:keyLabel="W" />
<Key
android:codes="88"
android:keyLabel="X" />
<Key
android:codes="89"
android:keyLabel="Y" />
<Key
android:codes="90"
android:keyLabel="Z" android:keyEdgeFlags="right"/>
</Row>

keyboard_layout</android.inputmethodservice.Keyboard>

并将其传递给keyboardView:

public class MainActivity extends Activity {
...

private void setKeyboardView() {
Keyboard keys = new Keyboard(this, R.xml.keyboard_layout);
KeyboardView kv = (KeyboardView) findViewById(R.id.keyboard_view);
kv.setKeyboard(keys);

kv.setEnabled(true);
kv.setClickable(true);

OnKeyboardActionListener listener = new OnKeyboardActionListener() {

@Override
public void onKey(int primaryCode, int[] keyCodes) {
}

@Override
public void onPress(int primaryCode) {
TextView tv = (TextView) findViewById(R.id.text_view);
tv.setText("" + primaryCode);
}

@Override
public void onRelease(int primaryCode) {
}

@Override
public void onText(CharSequence text) {
// TODO Auto-generated method stub

}

@Override
public void swipeDown() {
// TODO Auto-generated method stub

}

@Override
public void swipeLeft() {
// TODO Auto-generated method stub

}

@Override
public void swipeRight() {
// TODO Auto-generated method stub

}

@Override
public void swipeUp() {
// TODO Auto-generated method stub

}

};
kv.setOnKeyboardActionListener(listener);
}

如您所见,我还添加了一个“OnKeyboardActionListener”,它只是将按下的按钮的 keyCode 传递给 textView。

但是当我按下按钮时,监听器只会给出空引用,无论我按下哪个按钮。 (当我不将“primaryCode”转换为字符串时,应用程序崩溃。)除了“OnKeyboardActionListener”的“onPress”方法有效之外,当我将 onPress 方法中的代码放入 onKey 或 onRelease 方法时什么也没发生。

这是我的 MainActivity 的布局 xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ImageView android:id="@+id/image_view"
android:contentDescription="@string/imgView"
android:layout_weight="3"
android:layout_height="0dp"
android:layout_width="match_parent"
android:background="@android:color/background_dark"
/>

<TextView android:id="@+id/text_view"
android:layout_weight="1"
android:layout_height="0dp"
android:layout_width="fill_parent"
android:textSize="25sp"
android:gravity="center"
android:hint="@string/textview_hint"
android:background="@android:color/background_dark"
/>

<android.inputmethodservice.KeyboardView android:id="@+id/keyboard_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

</LinearLayout>

所以我用谷歌搜索并尝试了不同的设置,但没有任何帮助:(你们有人能帮我解决这个问题吗?像我想在程序中那样永久显示 keyBoardView 通常是一个好主意吗?

问候拉昆博

最佳答案

尝试:

StringBuilder mComposing = new StringBuilder();

String value = mComposing.append((char) primaryCode);

在此处更改

 @Override 
public void onPress(int primaryCode) {
TextView tv = (TextView) findViewById(R.id.text_view);
tv.setText("" + value);
}

布局/input.xml

   <android.inputmethodservice.KeyboardView android:id="@+id/keyboard_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

键盘

 Keyboard keys = new Keyboard(this, R.xml.keyboard_layout);
KeyboardView mInputView = (KeyboardView) getLayoutInflater().inflate(
R.layout.input, null);
mInputView.setOnKeyboardActionListener(this);
mInputView.setKeyboard(keys);

关于java - 键盘 View 键码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19234644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com